相关文章推荐
怕考试的熊猫  ·  fopen :invalid ...·  1 周前    · 
有情有义的卤蛋  ·  mysql ...·  9 月前    · 
儒雅的豆芽  ·  c++ std::map find ...·  1 年前    · 
销魂的烈马  ·  jboss CLI ...·  1 年前    · 

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

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

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

/// <summary>
/// 执行SQL命令
/// </summary>
/// <returns>The query.</returns>
/// <param name="queryString">SQL命令字符串</param>
public SQLiteDataReader ExecuteQuery(string queryString, params SQLiteParameter[] commandParameters)
       SQLiteCommand dbCommand = new SQLiteCommand(queryString, dbConnection);
                    if (commandParameters.Length > 0)
                        foreach (SQLiteParameter parm in commandParameters)
                            dbCommand.Parameters.Add(parm);
                    dataReader = dbCommand.ExecuteReader();
                catch (Exception e)
                    Log(e.Message);
                return dataReader;
/// <summary>
/// 创建参数
/// </summary>
/// <param name="parameterName">参数名称</param>
/// <param name="parameterType">参数类型</param>
/// <param name="parameterValue">参数值</param>
/// <returns>SQLiteParameter</returns>
public static SQLiteParameter CreateParameter(string parameterName, System.Data.DbType parameterType, object parameterValue)
                SQLiteParameter parameter = new SQLiteParameter();
                parameter.DbType = parameterType;
                parameter.ParameterName = parameterName;
                parameter.Value = parameterValue;
                return parameter;
/// <summary>
            /// 向指定数据表中插入数据
            /// </summary>
            /// <returns>The values.</returns>
            /// <param name="tableName">数据表名称</param>
            /// <param name="values">插入的数值</param>
            public string InsertValues(string tableName, string[] values)
                //获取数据表中字段数目
                int fieldCount = ReadFullTable(tableName).FieldCount;
                //当插入的数据长度不等于字段数目时引发异常
                int x = values.Length;
                if (values.Length != fieldCount)
                    throw new SQLiteException("values.Length!=fieldCount");
                string queryString = "INSERT INTO " + tableName + " VALUES (" + "@" + values[0] + "";
                for (int i = 1; i < values.Length; i++)
                    queryString += ", " + "@" + values[i] + "";
                queryString += " )";
                return queryString;

参考链接:

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

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

在解决这个问题上踩了不少的坑。最开始设想的方法是: 将 字符串string S1序列化为 二进制数据 byte[] ,再将byte[] 通过 Encoding中的方法,转化为字符串 string S2 存入到数据库。但是在这里始终遇到一个问题,即报错存入的时候遇到不能识别的字符“’”。其中的原因是由于S2中含有不能识别的转义符(/)。于是尝试第二种方法,直接将 byte[] 存入 ...
即使是做网络应用,在断线情况下,也需要考虑数据的本地存储。在SQLite出现之前,数据量大的情况下,我们一直使用ACCESS,数据量小,则文件存储。ACCESS不支持事务原子性,在断电情况下(这种情况总是会发生)会导致数据很难恢复。 SQLITE,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统。我直接使用的是http://sqlite.phxsoftware.com/...
1、将文件以二进制流的格式写入数据库 首先获得文件路径,然后将文件以二进制读出保存在一个二进制数组,与数据库建立连接,在SQL语句二进制数组赋值给相应的参数,完成向数据库写入文件的操作 /// 将文件流写入数据库 /// 存入数据库文件的路径 /// 数据库插入文件的行标示符ID public int UploadFile(string filePath, str
在没有使用SQLite这种轻量级的数据库之前,只使用过Sqlserver2008进行数据的增删改查,公司使用的是大型的ORACLE数据库,还没有真正的会使用它。那时候觉得数据库很庞大,然而遇到SQLite以后,发现有这么个迷你的小数据库,就像女生的包包随身携带的小镜子一样,放在哪里都能使用。 废话少说,SQLite提供了如何连接、关闭等数据库操作,但真正的增、删、改、查等语句同Sqlserver...
在Android,可以使用SQLite数据库来存储和管理数据。要显示SQLite数据库数据,可以使用以下步骤: 1. 创建一个SQLiteOpenHelper类来管理数据库的创建和升级。 2. 在SQLiteOpenHelper类创建一个方法来查询数据库数据,并返回一个Cursor对象。 3. 在Activity或Fragment,使用CursorAdapter来将Cursor数据显示在ListView或RecyclerView。 4. 可以使用Loader来异步加载数据,以避免在主线程执行查询操作。 5. 如果需要实现搜索功能,可以使用SearchView和Filter来过滤数据。 总之,要显示SQLite数据库数据,需要创建一个SQLiteOpenHelper类来管理数据库,使用CursorAdapter将数据显示在UI组件,并使用Loader来异步加载数据