在解决这个问题上踩了不少的坑。
最开始设想的方法是: 将 字符串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来异步加载数据。