当前位置:   article > 正文

在c#中如何将二进制序列化后的数据存入sqlite数据库_c# sqlitedatareader byte[]

c# sqlitedatareader byte[]

在解决这个问题上踩了不少的坑。

最开始设想的方法是: 将 字符串string S1 序列化为 二进制数据  byte[] ,再将 byte[] 通过 Encoding中的方法,转化为字符串 string S2 存入到数据库。但是在这里始终遇到一个问题,即报错存入的时候遇到不能识别的字符“’”。其中的原因是由于 S2中含有不能识别的转义符(/)。

于是尝试第二种方法,直接将 byte[] 存入 数据库。存入的方式是通过@设置参数的方法,即指定存入的类型BLOB。代码如下。

  1. /// <summary>
  2. /// 执行SQL命令
  3. /// </summary>
  4. /// <returns>The query.</returns>
  5. /// <param name="queryString">SQL命令字符串</param>
  6. public SQLiteDataReader ExecuteQuery(string queryString, params SQLiteParameter[] commandParameters)
  7. {
  8. try
  9. {
  10. SQLiteCommand dbCommand = new SQLiteCommand(queryString, dbConnection);
  11. if (commandParameters.Length > 0)
  12. {
  13. foreach (SQLiteParameter parm in commandParameters)
  14. dbCommand.Parameters.Add(parm);
  15. }
  16. dataReader = dbCommand.ExecuteReader();
  17. }
  18. catch (Exception e)
  19. {
  20. Log(e.Message);
  21. }
  22. return dataReader;
  23. }
  24. /// <summary>
  25. /// 创建参数
  26. /// </summary>
  27. /// <param name="parameterName">参数名称</param>
  28. /// <param name="parameterType">参数类型</param>
  29. /// <param name="parameterValue">参数值</param>
  30. /// <returns>SQLiteParameter</returns>
  31. public static SQLiteParameter CreateParameter(string parameterName, System.Data.DbType parameterType, object parameterValue)
  32. {
  33. SQLiteParameter parameter = new SQLiteParameter();
  34. parameter.DbType = parameterType;
  35. parameter.ParameterName = parameterName;
  36. parameter.Value = parameterValue;
  37. return parameter;
  38. }
  39. /// <summary>
  40. /// 向指定数据表中插入数据
  41. /// </summary>
  42. /// <returns>The values.</returns>
  43. /// <param name="tableName">数据表名称</param>
  44. /// <param name="values">插入的数值</param>
  45. public string InsertValues(string tableName, string[] values)
  46. {
  47. //获取数据表中字段数目
  48. int fieldCount = ReadFullTable(tableName).FieldCount;
  49. //当插入的数据长度不等于字段数目时引发异常
  50. int x = values.Length;
  51. if (values.Length != fieldCount)
  52. {
  53. throw new SQLiteException("values.Length!=fieldCount");
  54. }
  55. string queryString = "INSERT INTO " + tableName + " VALUES (" + "@" + values[0] + "";
  56. for (int i = 1; i < values.Length; i++)
  57. {
  58. queryString += ", " + "@" + values[i] + "";
  59. }
  60. queryString += " )";
  61. return queryString;
  62. }

参考链接:

https://www.cnblogs.com/luxiaoxun/p/3784729.html

https://blog.csdn.net/Archer_116/article/details/13523015?utm_source=blogxgwz3

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/480856
推荐阅读
相关标签
  

闽ICP备14008679号