日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

sqlite C/C++ API

發布時間:2024/8/23 c/c++ 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sqlite C/C++ API 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

官網:https://sqlite.org/download.html


下載代碼安裝三步走:

./configure // ./configure --help查看安裝參數設置,學習configure的配置,明白安裝后include、lib、bin等文件的位置 make make install
學習SQL基本語法,各個數據庫基本相同 http://www.w3cschool.cc/sqlite/sqlite-tutorial.html


常用函數:

int sqlite3_open(const char *filename, /* Database filename (UTF-8) */sqlite3 **ppDb /* OUT: SQLite db handle */ );typedef int (*sqlite3_callback)( void*, /* Data provided in the 4th argument of sqlite3_exec() */ int, /* The number of columns in row */ char**, /* An array of strings representing fields in the row */ char** /* An array of strings representing column names */ ); int sqlite3_exec(sqlite3*, /* An open database */const char *sql, /* SQL to be evaluated */int (*callback)(void*,int,char**,char**), /* Callback function */void *, /* 1st argument to callback */char **errmsg /* Error msg written here */ );int sqlite3_close(sqlite3*);
例子:

#include <stdio.h> #include <stdlib.h> #include <sqlite3.h>#define DB_FILENAME "/home/suo/Desktop/sqlite/datadir/sqlite.db" static int flag = 0;static int callback(void *userData, int columnNum, char **columnText, char **columnName) {int index;if (userData && !flag++) {fprintf(stdout, "---------%s------\n", (const char*)userData);for (index=0; index<columnNum; index++) {printf("%s\t", columnName[index]);}printf("\n");}for(index=0; index<columnNum; index++){printf("%s\t", columnText[index] ? columnText[index] : "NULL");}printf("\n");return 0; }int main(int argc, char* argv[]) {sqlite3 *db;char *zErrMsg = 0;int rc;char *sql;rc = sqlite3_open(DB_FILENAME, &db);if( rc != SQLITE_OK){fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));exit(0);}else{fprintf(stderr, "Opened database successfully\n");}sql = "CREATE TABLE COMPANY("\"ID INT PRIMARY KEY NOT NULL,"\"NAME TEXT NOT NULL,"\"AGE INT NOT NULL,"\"ADDRESS CHAR(50),"\"SALARY REAL);";rc = sqlite3_exec(db, sql, callback, (void *)sql, &zErrMsg);if(rc != SQLITE_OK){fprintf(stderr, "SQL error :%s\n", zErrMsg);sqlite3_free(zErrMsg);} else {fprintf(stdout, "Table created successfully\n");}sql = "INSERT INTO COMPANY(ID, NAME, AGE, ADDRESS, SALARY) "\"VALUES(1, 'Paul', 32, 'California', 20000.00); "\"INSERT INTO COMPANY(ID, NAME, AGE, ADDRESS, SALARY) "\"VALUES(2, 'Allen', 25, 'Texas', 15000.00);""INSERT INTO COMPANY(ID, NAME, AGE, ADDRESS, SALARY) "\"VALUES(3, 'Teddy', 23, 'Norway', 20000.00);""INSERT INTO COMPANY(ID, NAME, AGE, ADDRESS, SALARY) "\"VALUES(4, 'Mark', 25, 'Rick-Mond', 65000.00);";rc = sqlite3_exec(db, sql, callback, (void *)sql, &zErrMsg);if(rc != SQLITE_OK){fprintf(stderr, "SQL error: %s", zErrMsg);sqlite3_free(zErrMsg);} else {fprintf(stdout, "Records created successfully\n");}sql = "SELECT * FROM COMPANY;";rc = sqlite3_exec(db, sql, callback, (void *)sql, &zErrMsg);if(rc != SQLITE_OK){fprintf(stderr, "SQL error: %s", zErrMsg);sqlite3_free(zErrMsg);} else {fprintf(stdout, "Select records successfully\n");}sqlite3_close(db);return 0; }


對應Makefile:

#! /usr/makerm=/bin/rm -f CC = gcc DEFS = PROGNAME = testsqlite INCLUDES = -I /home/suo/Desktop/sqlite/include DEFINES += $(INCLUDES) $(DEFS) CFLAGS = $(DEFINES) -g -Wall -O2 LDFLAGS = SRCS = testsqlite.c OBJS = testsqlite.o LIBS = -L./lib -lsqlite3.cpp.o:$(rm) $@$(CC) $(CFLAGS) -c $*.cppall: $(PROGNAME) $(PROGNAME) : $(OBJS) $(CC) $(CFLAGS) -o $(PROGNAME) $(OBJS) $(LDFLAGS) $(LIBS)clean:$(rm) $(OBJS) $(PROGNAME) core *~
執行結果:

Opened database successfully Table created successfully Records created successfully ---------SELECT * FROM COMPANY;------ ID NAME AGE ADDRESS SALARY 1 Paul 32 California 20000.0 2 Allen 25 Texas 15000.0 3 Teddy 23 Norway 20000.0 4 Mark 25 Rick-Mond 65000.0 Select records successfully

總結

以上是生活随笔為你收集整理的sqlite C/C++ API的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。