您的位置:首页 > 数据库

SQLite3的API简单应用

2014-09-26 18:13 387 查看
首先是一个简单的应用:

test_sqlite.c

[cpp] view
plaincopy

#include <stdio.h>

#include <sqlite3.h>



static int callback(void *NotUsed, int argc, char **argv, char **azColName)

{

int i;

for(i=0; i<argc; i++)

{

printf("%s = %s/n", azColName[i], argv[i] ? argv[i] : "NULL");

}

printf("/n");

return 0;

}



int main(int argc, char **argv)

{

sqlite3 *db;

char *zErrMsg = 0;

int rc;

if( argc!=3 )

{

fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT/n", argv[0]);

}

rc = sqlite3_open(argv[1], &db);

if( rc )

{

fprintf(stderr, "Can't open database: %s/n", sqlite3_errmsg(db));

sqlite3_close(db);

}

rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg);

if( rc!=SQLITE_OK )

{

fprintf(stderr, "SQL error: %s/n", zErrMsg);

}

sqlite3_close(db);

return 0;

}

编译语句:arm-linux-gcc -o test_sqlite test_sqlite.c -lsqlite3 -L/home/bks/sqlite3/lib -I/home/bks/sqlite3/include

需要加入lib和include的路径。

编译完成后使用语句:./test_sqlite test.db "SELECT * FROM phonetable"

这里需要注意的是:我之前在当前目录文件夹下建立了名字:test.db 的数据库,其中包含表格:phonetable

现在是一个高级运用啦:

[cpp] view
plaincopy

#include <stdio.h>

#include "sqlite3.h"

static int callback(void *NotUsed, int ncols, char **values, char **headers)

{

int i;

for(i=0; i<ncols; i++)

{

printf("%s = %s\n", headers[i], values[i] ? values[i] : "NULL");

}

printf("\n");

return 0;

}

void doCmd(sqlite3 *db,char *pCmd)

{

char *errmsg=NULL;

if (sqlite3_exec(db,pCmd,NULL,NULL,&errmsg) != SQLITE_OK) {

printf("%s\n",errmsg);

return;

}

}



int main()

{

sqlite3 *db = NULL;

char *errmsg=NULL;

printf("Please input the name of DB(*.db):\n");

char dbname[30];

gets(dbname);

//Open a DB

int result = sqlite3_open(dbname,&db);

if (result != SQLITE_OK) {

sqlite3_close(db);

return;

}

//Create a Table

char *createTableSQL =

"CREATE TABLE IF NOT EXISTS PHONETABLE (id integer primary key,name text ,phone_number integer)";

doCmd(db,createTableSQL);



printf("Succeed to create test table now.\n");

//Insert

char *sql=NULL;

sql="INSERT into PHONETABLE (name,phone_number) values('Jone','15901110265')";

doCmd(db,sql);



sql="INSERT into PHONETABLE (name,phone_number) values('Jack','13811907568')";

doCmd(db,sql);

doCmd(db,"INSERT into PHONETABLE (name,phone_number) values('Jackson','13811907568')");

//Show

printf("Show the table\n");

sql="SELECT *FROM PHONETABLE";

int rc = sqlite3_exec(db,sql, callback, 0, &errmsg);

if( rc!=SQLITE_OK )

{

fprintf(stderr, "SQL error: %s\n", errmsg);

}

//Delete

printf("Delete 'Jack' from table\n");

sql="DELETE FROM phonetable where name='Jack'";

doCmd(db,sql);



printf("Show the table\n");

sql="SELECT *FROM PHONETABLE";

rc = sqlite3_exec(db,sql, callback, 0, &errmsg);

if( rc!=SQLITE_OK )

{

fprintf(stderr, "SQL error: %s\n", errmsg);

}

//Change

printf("Alter Jackson to Mike.\n");

sql="update phonetable set name='Jack' where name='Jone'";

doCmd(db,sql);



printf("Show the table\n");

sql="SELECT *FROM PHONETABLE";

rc = sqlite3_exec(db,sql, callback, 0, &errmsg);

if( rc!=SQLITE_OK )

{

fprintf(stderr, "SQL error: %s\n", errmsg);

}

sqlite3_close(db);

return 0;

}

这个属于升级版了。操作包括了

1.建立数据库;

2.插入数据;

3.删除数据;

4.修改数据;

5.以及查询数据;

各位看官自己慢慢看吧。

就到这里,后续有新的研究成果在写出来
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: