(2)操作二进制 sqlite操作二进制数据需要用一个辅助的数据类型:sqlite3_stmt *。 这个数据类型记录了一个“sql语句”。为什么我把“sql语句”用双引号引起来?因为你可以把sqlite3_stmt *所表示的内容看成是sql语句,但是实际上它不是我们所熟知的sql语句。它是一个已经把sql语句解析了的、用sqlite自己标记记录的内部数据结构。 正因为这个结构已经被解析了,所以你可以往这个语句里插入二进制数据。当然,把二进制数据插到sqlite3_stmt结构里可不能直接memcpy,也不能像std::string那样用+号。必须用sqlite提供的函数来插入。 i.1写入二进制 下面说写二进制的步骤。 要插入二进制,前提是这个表的字段的类型是blob类型。我假设有这么一张表: create table Tbl_2( ID integer,file_content blob ) 首先声明 sqlite3_stmt * stat; 然后,把一个sql语句解析到stat结构里去: sqlite3_prepare( db,“insert into Tbl_2( ID,file_content) values( 10,? )”,-1,&stat,0 ); 上面的函数完成sql语句的解析。第一个参数跟前面一样,是个sqlite3 *类型变量,第二个参数是一个sql语句。这个sql语句特别之处在于values里面有个?号。在sqlite3_prepare函数里,?号表示一个未定的值,它的值等下才插入。 第三个参数我写的是-1,这个参数含义是前面sql语句的长度。如果小于0,sqlite会自动计算它的长度(把sql语句当成以 |