在针对于sqlite的Binary字段类型操作的时候,用sql语句操作Insert后,取出的数据就会发生错误。
sql语句:string sql = string.Format("Insert into sys_Entlib(EntlibName,EntlibVersion,EntlibConfig) values('{0}','{1}','{2}')", entlib.EntlibName, entlib.EntlibVersion, entlib.EntlibConfig);
读取时的错误:在分析完成之前就遇到流结尾。
查看代码中发现,byte[]得到的数据少了一大部分。
而改用:
SQLiteCommand cmd = new SQLiteCommand();
string sql = "Insert into sys_Entlib(EntlibName,EntlibVersion,EntlibConfig) values(@ent_name,@ent_version,@ent_config)";
cmd.CommandText = sql;
cmd.Parameters.Add("@ent_name", DbType.String).Value = entlib.EntlibName;
cmd.Parameters.Add("@ent_version", DbType.String).Value = entlib.EntlibVersion;
cmd.Parameters.Add("@ent_config", DbType.Binary).Value = EntlibConfigModel.SerializableConfig(entlib.EntlibConfig);
则不会有错误,读取正常。
数据Insert都成功,没有问题。用sql主要是读取数据的时候发生错误,请教下达人们。为什么不能用sql语句直接插入呢?
使用SQLiteParameter操作一般没有问题,官网提供的test程序,包括了各种操作的测试,代码值得参考
http://topic.csdn.net/u/20081024/09/9b2bf0ad-ec15-4b00-9994-3124038ba329.html
http://www.codeproject.com/Questions/56109/Reading-BLOB-in-Sqlite-using-Csharp-NET-CF-3-5-PPC.aspx