加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

SQLite3的API应用

发布时间:2020-12-12 20:23:26 所属栏目:百科 来源:网络整理
导读:首先是一个简单的应用: 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; iargc; i++) { printf("%s = %s/n",azColName[i],argv[i] ? argv[i] : "NULL"); }

首先是一个简单的应用:

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,&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

现在是一个高级运用啦:

#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 = %sn",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,&errmsg) != SQLITE_OK) {
	printf("%sn",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 tablen");
    sql="SELECT *FROM PHONETABLE";
    int rc = sqlite3_exec(db,sql,&errmsg);
    if( rc!=SQLITE_OK )
    {
        fprintf(stderr,"SQL error: %sn",errmsg);
    }
//Delete
    printf("Delete 'Jack' from tablen");
    sql="DELETE FROM phonetable where name='Jack'";
    doCmd(db,sql);

    printf("Show the tablen");
    sql="SELECT *FROM PHONETABLE";
    rc = sqlite3_exec(db,errmsg);
    }
//Change
    printf("Alter Jackson to Mike.n");
    sql="update phonetable set name='Jack' where name='Jone'";
    doCmd(db,errmsg);
    }
     sqlite3_close(db);
     return 0;
}

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

1.建立数据库;

2.插入数据;

3.删除数据;

4.修改数据;

5.以及查询数据;

各位看官自己慢慢看吧。

就到这里,后续有新的研究成果在写出来

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读