1.SQLCE-Software
SqlCE ist eine der wichtigsten SQL-Datenbanken.
SQLCE3.5-Version
öffentliche Klasse 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;
versuchen
{
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 (Ausnahme ex)
{
sqltran.Rollback();
}
Endlich
{
sqlCon.Close();
}
}
}
Verwenden Sie die SQLCE-Funktion unter Verwendung von System.Data.SqlServerCe没有什么区别.
2.Verbindungszeichenfolge
Die VerbindungsString-Funktion ist für die Verwendung mit VS2008 geeignet的路径是.xxx.sdf,而在目标机上是不能使用相对路径的.
String dbcStr = @"Data Source =" + appPath.Replace(@" \",@" ") + @" Mc.sdf“;
需要注意的是@似乎表示引号中的内容不转义,这样呢写起来会比较方便.如果用转义的也可以@"Mc.sdf",这个地方是数据库相对于执行文件的路径,
需要根据自己的实际情况进行修改.
3.一个小问题的解决
Die Ausdrucksauswertung hat einen Überlauf verursacht. [ Name der Funktion (falls bekannt) = ]。
然后搜索的结果, 发现是需要打sqlce sp2 beta2的补丁, 结果打了补丁没用.后来觉得是不是数据类型的问题,将上面程序中对应的几个decimal的字段的长度和精度都进行了增加,
问题解决.因此估计该Exception应该是数据类型不匹配一类的问题。
作者:大米猫咪来回变