SqlCE 3.5使用ConnectionString设定及错误解决

SqlCE 3.5使用ConnectionString设定及错误解决,第1张

概述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 = @&qu…

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应该是数据类型不匹配一类的问题。 

出处:http://goodleaf.cnblogs.com/

总结

以上是内存溢出为你收集整理的SqlCE 3.5使用ConnectionString设定及错误解决全部内容,希望文章能够帮你解决SqlCE 3.5使用ConnectionString设定及错误解决所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1157244.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存