1、代码如下
#include <iostream>
#include <string>
#include "sqlite3.h"
using namespace std;
//输出数据
static int callback(void *data, int args_num, char **argv, char **argc)
{
cout << *(int*)data << endl;//输出传入的值
for (int i = 0; i < args_num; i++)
{
cout << argc[i] << " = " << (argv[i] ? argv[i] : "NULL") << " ";
}
cout << endl;
return 0;
}
int main()
{
sqlite3 *db;
char *errMsg;
//定义
//创建表
string createDbsql = "create table user(ID integer PRIMARY KEY autoincrement,age INT NOT NULL,mobile INT NOT NULL,name TEXT NOT NULL)";
//插入数据
string insertsql = "insert into user (name,age,mobile) values ('xxx',12,'13xxxxxxxxxxxx')";
//删除数据
string deletesql = "delete from user where id=1";
//检索数据
string selectsql = "select * from user";
//打开创建数据库
int rc = sqlite3_open("/data/testsqlite3.db", &db);
if (rc != SQLITE_OK)
{
cout << "open sqlite3 fail." << endl;
return -1;
}
cout << "open sqlite3 ok." << endl;
int rs = sqlite3_exec(db, createDbsql.c_str(), 0, 0, &errMsg);
if (rs != SQLITE_OK)
{
cout << "create table fail" << endl;
}
else
{
cout << "create table ok." << endl;
}
//插入数据
rs = sqlite3_exec(db, insertsql.c_str(), 0, 0, &errMsg);
if (rs != SQLITE_OK)
{
cout << "insert fail" << endl;
}
else
{
cout << "insert data ok." << endl;
}
//检索数据:callback方式
cout << "callback................." << endl;
int first = 111;//传入callback数据
sqlite3_exec(db, selectsql.c_str(), callback, (void *)&first, &errMsg);
cout << "gettable................." << endl;
cout << "first=" << first << endl;
// //删除数据
// rs = sqlite3_exec(db, deletesql.c_str(), 0, 0, &errMsg);
// if (rs != SQLITE_OK)
// {
// cout << "delete fail" << endl;
// }
// else
// {
// cout << "delete data ok." << endl;
// }
//检索数据:gettable方式
char **pResult;
int nRow;
int nCol;
int nResult = sqlite3_get_table(db, selectsql.c_str(), &pResult, &nRow, &nCol, &errMsg);
if (nResult != SQLITE_OK)
{
sqlite3_close(db);
cout << errMsg << endl;
sqlite3_free(errMsg);
return 0;
}
string strOut;
int nIndex = nCol;
for (int i = 0; i < nRow; i++)
{
for (int j = 0; j < nCol; j++)
{
strOut += pResult[j];
strOut += ":";
strOut += pResult[nIndex];
strOut += "
";
++nIndex;
}
}
cout << strOut << endl;
sqlite3_close(db);
return 0;
}
2、安装libsqlite3
sudo apt-get install libsqlite3
3、编译
g++ -o main testsqlite3.cpp -L /usr/local/lib -I/usr/local/include -lsqlite3
4、运行