SqlCE 3.5 使用:ConnectionString 设定和一个小错误的解决
2010-01-13 20:32
351 查看
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应该是数据类型不匹配一类的问题。
相关文章推荐
- xoops 使用xampp环境安装时的一个小错误解决
- c#使用CsGL时一个小错误:“CsGL.OSLib”的类型初始值设定项引发异常 产生的原因
- 错误“操作必须使用一个可更新的查询”原因及解决办法
- Access中"操作必须使用一个可更新的查询"错误的解决办法
- swift使用 cocopods真机调试的一个错误解决方法
- ajax缓存导致的一个错误,使用时间戳完美解决
- asp:(0X80004005)操作必须使用一个可更新的查询”错误的解决办法
- "执行SQL语句时出现问题操作必须使用一个可更新的查询"错误的解决方法
- 错误“操作必须使用一个可更新的查询”原因及解决办法
- 解决 操作必须使用一个可更新的查询"的错误
- 错误“操作必须使用一个可更新的查询”原因及解决办法
- 解决SQL Server 2008 错误15023:当前数据库中已存在用户或角色,SQLServer2008,错误15023 在使用SQL Server 2008时,我们经常会遇到一个
- Access中"操作必须使用一个可更新的查询"错误的解决办法
- 安装使用MySQL时一个典型错误的解决、临时记录下
- 在linux上使用"scp"命令拷贝一个目录到另一台服务器的时候报"not a regular file"错误的解决办法
- "Microsoft OLE DB Provider for ODBC Drivers (0x80004005) 操作必须使用一个可更新的查询”错误的解决办法
- 使用验证控件出现错误:要“jquery”ScriptResourceMapping。请添加一个名为 jquery (区分大小写)的 ScriptResourceMapping。”的解决办法。
- Jetstress 2010 使用一个小错误解决
- 错误~操作必须使用一个可更新的查询~解决办法
- Microsoft JET Database Engine 错误 '80004005' 操作必须使用一个可更新的查询。解决方法