SQLite3基本操作入门

来源:互联网 发布:女生问你喜欢我吗 知乎 编辑:程序博客网 时间:2024/05/22 11:41

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后缀就可以了。

0 0
原创粉丝点击