首先是一个简单的应用:
test_sqlite.c
- #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;
- }
需要加入lib和include的路径。
编译完成后使用语句:./test_sqlite test.db "SELECT * FROM phonetable"
这里需要注意的是:我之前在当前目录文件夹下建立了名字:test.db 的数据库,其中包含表格:phonetable
现在是一个高级运用啦:
- #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.以及查询数据;
各位看官自己慢慢看吧。
就到这里,后续有新的研究成果在写出来