今天工作需要,读取了一下数据库中的blob数据,用的是sqlite3_column_blob(),首先说一下什么是blob:二进制大对象,是一个可以存储二进制文件的容器。一些大文件,如图片视频音频等,在数据库中就是用blob存储的。 当我们取一个数据库中的数据时,如下图: 这个数据库中保存data数据就是blob,其中的数据时图片,如下图...
在SQLite 中,sqlite3_column_blob()是一个用于获取指定列的二进制数据的函数。它有两个参数: 第一个参数是一个sqlite3_stmt*类型的指针,表示 SQL 语句编译后的声明。 第二个参数是一个整数索引值,表示要获取数据的列索引(从0开始)。 例如,以下示例代码展示了如何使用sqlite3_column_blob()函数来获取第一列(...
SQLite3利用函数sqlite3_column_blob来返回blob字段的内容的指针,并通过sqlite3_column_bytes来返回对应该字段的长度。 只是一直有一个疑问就是通过sqlite3_column_blob返回的二进制blob内容的内存是谁来释放,是由SQLite内部还是用调用者来释放。 后来仔细观察了内存变化发现,sqlite3_column_blob函数会预先分配一块内存,...
int ISQLite3Provider.sqlite3_column_blob(IntPtr stm, int columnIndex, byte[] result, int offset) { if (result == null || offset >= result.Length) { return raw.SQLITE_ERROR; } IntPtr blobPointer = NativeMethods.sqlite3_column_blob(stm, columnIndex); if (blobPointer == IntPtr.Zero)...