1.SQLCE的使用
SqlCE的使用和一般SQL差別不大,但套件不一樣,不多說看例子:
SQLCE3.5使用實例
公共類Db
{
公共靜態無效WriteLocation(Gps GPS)
{
string appPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase.ToString());
string dbcStr = @"資料來源 = " + appPath.Replace(@" \",@" ") + @"Mc.sdf";
SqlCeConnection sqlCon = new SqlCeConnection(dbcStr);
SqlCeCommand sqlCmd = new SqlCeCommand(" ", sqlCon);
sqlCon.Open();
SqlCeTransaction sqltran = sqlCon.BeginTransaction();
sqlCmd.Transaction = sqltran;
嘗試
{
sqlCmd.CommandText =「插入Location_t(Lc_Dt,Lc_Longitude,Lc_Latitude,Lc_Speed,Lc_Direction)值(@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(異常前)
{
sqltran.Rollback();
}
最後
{
sqlCon.Close();
}
}
}
首先要注意SQLCE需要使用System.Data.SqlServerCe;而相關的類別都必須由Sql引用作為SqlCe引用。
2.連接字串
在ConnectionString這裡我費了點功夫,開始怎麼弄都不對,後來才發現是有點竅門的。
而絕對路徑試了多次都不行,後來才找到一篇文章是取當前程式路徑。 Mc.sdf";即這句話。
要注意的是@好像表示引號中的內容不轉義,這樣呢寫起來會比較方便。資料庫相對於執行檔的路徑,
需要根據自己的實際情況進行修改。
3.一個小問題的解決
首先要說的是經驗主義要不得。 [ 函數名稱(如果已知) = ]。
然後搜尋的結果,發現是需要打sqlce sp2 beta2的補丁,結果打了補丁沒用。
問題解決。
作者:米貓咪來回變