1.创建Win32控制台应用程序空项目,我命名为SQLite3,将sqlite3.c和sqlite3.h引入到工程中
2.创建一个main.cpp文件
main.cpp文件内容:
#include <iostream>
#include "sqlite3.h"
using namespace std;
等义回调函数 //typedef int(* sqlite3_callback)(void *, int, char **, char **); // // //int LoadMyInfo( void * para, int n_column, char ** column_value, char ** column_name ) //{ // //}
void main() { printf("123"); int a = 1; sqlite3 *db; char *dbPath="C:/Users/ZC-BC010/Documents/dgd.db"; // char *szErrMsg = NULL;
int rc = sqlite3_open(dbPath, &db);
if (rc != SQLITE_OK) { printf("失败"); return ; }
rc = sqlite3_exec(db,"select * from main", 0, 0, NULL); if(rc != SQLITE_OK ) { printf("失败"); return ; }
rc = sqlite3_exec(db,"update main set baseinfo = 111222 where id = 1", 0, 0, NULL); if(rc != SQLITE_OK ) { printf("失败"); return ; } //执行玩语句后会将dgd.db文件中的数据改变
// //sqlite3_close();
//这就是执行一条 sql 语句的函数。 //原型 int sqlite3_exec(sqlite3*, const char *sql, sqlite3_callback, void *, char **errmsg ); //第4个参数void * 是你所提供的指针,你可以传递任何一个指针参数到这里,这个参数最终会传到回调函数里面 //sqlite3_exec(db,“select * from MyTable_1”, LoadMyInfo, 0, errmsg);
//sqlite3_get_table();
写入2进制 //sqlite3_stmt *star;
//把sql语句解析到star结构里去 //1. sqlite3_prepare(db, "insert into Tbl_2( ID, file_content) values( 10, ? )", -1, &star, 0); //在sqlite3_prepare函数里,?号表示一个未定的值,它的值等下才插入。
//开始插入二进制数据到star中, 这里的pdata就是?代表的值 //2. sqlite3_bind_blob(stat, 1, pdata, (int)(length_of_data_in_bytes), NULL );//pdata为数据缓冲区,length_of_data_in_bytes为数据大小,以字节为单位 //sqlite3_bind_XXX 所包含的全部接口,它们是用来给SQL声明中的通配符赋值的
//3. int result = sqlite3_step(star);//二进制数据保存到数据库里面
//把 sqlite3_stmt 结构给释放 //4. sqlite3_finalize(star); //把刚才分配的内容析构掉
读出2进制 //1. 解析到star结构里去 //sqlite3_prepare(db, "select * from Tbl_2", -1, &star, 0);
//一次sqlite3_step只查询出一条记录,可以循环查询,直到不为 SQLITE_ROW 时表示查询结束 //int result = sqlite3_step(star);//在这里result值为SQLITE_ROW 时表示成功(不是 SQLITE_OK )
//获取第N个字段的值,0为第一个,获取第一个字段:ID的值 //int id = sqlite3_colomn_int(star, 0)
//获取 file_content 的值 因为 file_content 是二进制,因此我需要得到它的指针,还有它的长度 //const void *pFileContent = sqlite3_column_blob(star, 1); //int len = sqlite3_column_byte3(star, 1);
//释放sqlite3_stmt结构 //sqlite3_finalize(star) //result = sqlite3_reset(star)
//返回的记录集通过使用其它的几个 sqlite3_column_***() 函数来提取, 所有的这些函数都把列的编号作为第二个参数. 列编号从左到右以零起始.
//void sqlite3_value_xxxx //void sqlite3_result_xxxxx
} |
根据sqlite3提供的接口函数操作数据库文件,使用SQLite Expert Professional 3创建的文件刚开始不是db格式的,自己加上db后缀就可以了。