程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> ASP編程 >> ASP技巧 >> SqlCE 3.5 使用:ConnectionString 設定和一個小錯誤的解決

SqlCE 3.5 使用:ConnectionString 設定和一個小錯誤的解決

編輯:ASP技巧

1.SQLCE的使用     
SqlCE的使用和普通SQL區別不大,但是包不一樣,不多說看例子:

 

SQLCE3.5使用例程
public class Db
    {

        public static void WriteLocation(Gps gps)
        {
            string appPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase.ToString());
            string dbcStr = @"Data Source =" + appPath.Replace(@"\\",@"\") + @"\Mc.sdf";
            SqlCeConnection sqlCon = new SqlCeConnection(dbcStr);
            SqlCeCommand sqlCmd = new SqlCeCommand(" ", sqlCon);
            sqlCon.Open();
            SqlCeTransaction sqltran = sqlCon.BeginTransaction();
            sqlCmd.Transaction = sqltran;
          
            try
            {  
                sqlCmd.CommandText = "INSERT INTO Location_t (Lc_Dt, Lc_Longitude, Lc_Latitude, Lc_Speed, Lc_Direction) VALUES (@Lc_Dt,@Lc_Longitude,@Lc_Latitude,@Lc_Speed,@Lc_Direction)";
                sqlCmd.Parameters.Add("Lc_Dt", SqlDbType.DateTime).Value = gps.Datetime;
                sqlCmd.Parameters.Add("Lc_Longitude", SqlDbType.Decimal).Value = gps.DLong;
                sqlCmd.Parameters.Add("Lc_Latitude", SqlDbType.Decimal).Value = gps.DLat;
                sqlCmd.Parameters.Add("Lc_Speed", SqlDbType.Decimal).Value = gps.DSpeed;
                sqlCmd.Parameters.Add("Lc_Direction", SqlDbType.Decimal).Value = gps.DDirection;
                sqlCmd.ExecuteNonQuery();
                sqltran.Commit();
            }
            catch (Exception ex)
            {
                sqltran.Rollback();               
            }
            finally
            {
                sqlCon.Close();               
            }
        }
    }
        

首先需要注意SQLCE需要 using System.Data.SqlServerCe;並且相關的類都要由Sql開頭變為SqlCe開頭。至於使用則和普通Sql沒有什麼區別。

 

2.ConnectionString
      在ConnectionString這裡我很花了點功夫,開始怎麼弄都不對,後來才發現是有點竅門的。在VS2008裡面,它使用的路徑是.\xxx.sdf,而在目標機上是不能使用相對路徑的。

而絕對路徑試了多次都不行,後來才找到一篇文章是取當前程序路徑。string dbcStr = @"Data Source =" + appPath.Replace(@"\\",@"\") + @"\Mc.sdf";即這一句話。

需要注意的是@似乎表示引號中的內容不轉義,這樣呢寫起來會比較方便。如果用轉義的也可以,這個大家可以自己去試。@"\Mc.sdf",這個地方是數據庫相對於執行文件的路徑,

需要根據自己的實際情況進行修改。

3.一個小問題的解決
      首先要說的是經驗主義要不得。在用上面的sql語句寫數據庫的時候開始有錯誤:ExPRession evaluation caused an overflow. [ Name of function (if known) =  ]。

然後搜索的結果,發現是需要打sqlce sp2 beta2的補丁,結果打了補丁沒用。後來覺得是不是數據類型的問題,將上面程序中對應的幾個decimal的字段的長度和精度都進行了增加,

問題解決。因此估計該Exception應該是數據類型不匹配一類的問題。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved