C++操作SQLite

1、下载

可以到该页面下载:http://www.sqlite.org/download.html

下载sqlite-dll-win32-x86-3080403.zip和sqlite-amalgamation-3080403.zip,前者可以得到sqlite3.dll和sqlite3.def后者可以得到sqlite3.h


2、编译生成sqlite3.lib(使用VC6开发环境)

在命令行执行图中所示命令,生成sqlite3.lib和sqlite3.exp两个文件。

至于命令中的三个引号中的目录,“D:\Program Files\Microsoft Visual Studio\”是VC6安装目录,“D:\Software\SQLite 3.8.4.3\Windows”是“sqlite3.dll”的位置,最后一个是生成文件的保存位置。

如果提示:没有找到 mspdb60.dll

到VC安装目录搜索,找到后拷贝到LIB.exe所在目录(我的是“D:\Program Files\Microsoft Visual Studio\VC98\Bin”),然后再运行。

C++操作SQLite_第1张图片


3、编程测试

将生成的sqlite3.lib连同sqlite3.dll和sqlite3.h一起拷贝到我们的工程目录,将sqlite3.lib包含进工程中,并在工程属性设置中加入sqlite3.lib。

C++操作SQLite_第2张图片

最后,该贴代码了:

#include"sqlite3.h"
#include<iostream>
using namespace std;

bool test_insert(sqlite3 *db);//增
bool test_delete(sqlite3 *db);//删
bool test_update(sqlite3 *db);//改
bool test_select(sqlite3 *db);//查
int callback(void *data, int n_columns, char **column_values, char **column_names);//callback函数

char *errMsg = NULL;
int result = 0;

int main(){
	char *strConn = "D:\\Program Files\\SQLite\\test.db";
	sqlite3 *db = NULL;
	
	//打开数据库
	result = sqlite3_open(strConn, &db);
	if(SQLITE_OK != result){
		cout<<"Open database error!"<<endl;
		return 1;
	}

	//数据库操作测试
	try{
		bool flag = false;
		//flag = test_insert(db);
		//flag = test_update(db);
		flag = test_select(db);
		//flag = test_delete(db);
		if(flag){
			cout<<"Operation success!"<<endl;
		}else{
			cout<<errMsg<<endl;
		}
	}catch(exception &ex){
		cout<<"error:"<<ex.what()<<endl;
	}

	//关闭数据库
	sqlite3_close(db);

	return 0;
}

//插入
bool test_insert(sqlite3 *db){
	bool flag = false;
	char *sql = "insert into t_user(name, logname, password, status) values('test', '[email protected]', 'test', 1)";
	result = sqlite3_exec(db, sql, NULL, NULL, &errMsg);
	flag = SQLITE_OK == result;
	return flag;
}

//删除
bool test_delete(sqlite3 *db){
	bool flag = false;
	char *sql = "delete from t_user where id = 5";
	result = sqlite3_exec(db, sql, NULL, NULL, &errMsg);
	flag = SQLITE_OK == result;
	return flag;
}

//修改
bool test_update(sqlite3 *db){
	bool flag = false;
	char *sql = "update t_user set name = 'test_update', logname = '[email protected]' where logname = '[email protected]' and name = 'test'";
	result = sqlite3_exec(db, sql, NULL, NULL, &errMsg);
	flag = SQLITE_OK == result;
	return flag;
}

//查询
bool test_select(sqlite3 *db){
	bool flag = false;
	char *sql = "select name, logname, password, status from t_user where logname like '%@163.com'";
	result = sqlite3_exec(db, sql, callback, NULL, &errMsg);
	flag = SQLITE_OK == result;
	return flag;
}

//callback函数,每一行都会调用一次
int callback(void *data, int columnCount, char **columnValues, char **columnNames){
	static bool column_name_print = true;
	int i = 0;

	//打印列名
	if(column_name_print){
		for(i=0; i<columnCount; i++){
			if(i>0) cout<<" | ";
			cout<<columnNames[i];
		}
		cout<<endl;
		column_name_print = false;
	}
	
	//打印数据
	for(i=0; i<columnCount; i++){
		if(i>0) cout<<" | ";
		cout<<columnValues[i];
	}
	cout<<endl;

    return 0;
}


你可能感兴趣的:(C++,数据库,sqlite)