新聞中心
SQLite是一種輕型的數(shù)據(jù)庫管理系統(tǒng),是一種基于文件的數(shù)據(jù)庫,常常被用于嵌入式設(shè)備等場景下。SQLite是一個獨立的軟件庫,提供了一個使用簡單的統(tǒng)一的應(yīng)用程序接口來訪問和管理數(shù)據(jù)。一般來說,都是通過其他編程語言,如C語言,來操作SQLite數(shù)據(jù)庫。

在本文中,我們將介紹C語言中操作SQLite數(shù)據(jù)庫的基本方法,包括如何連接數(shù)據(jù)庫、創(chuàng)建表、插入數(shù)據(jù)、查詢數(shù)據(jù)、更新數(shù)據(jù)和刪除數(shù)據(jù)等操作。
連接數(shù)據(jù)庫
在C語言中連接SQLite數(shù)據(jù)庫很簡單,只需要使用sqlite3_open()函數(shù)即可。此函數(shù)需要傳入一個指向數(shù)據(jù)庫文件的指針(如果不存在將會創(chuàng)建它),如果操作成功則返回0,否則返回錯誤碼。
例如:
“`c
#include
#include
#include
int mn(int argc, char* argv[])
{
sqlite3 *db;
int rc = sqlite3_open(“test.db”, &db);
if (rc != SQLITE_OK){
printf(“Can’t open database: %s\n”, sqlite3_errmsg(db));
sqlite3_close(db);
return 1;
}
else{
printf(“Opened database successfully!\n”);
}
sqlite3_close(db);
return 0;
}
“`
在上述示例中,我們打開了一個名為test.db的數(shù)據(jù)庫文件,并使用sqlite3_errmsg()函數(shù)輸出錯誤信息。如果操作成功,則輸出“Opened database successfully!”。
創(chuàng)建表
創(chuàng)建表是建立一個SQLite數(shù)據(jù)庫的非?;镜牟僮鳌T贑語言中,我們可以使用sqlite3_exec()函數(shù)來執(zhí)行SQL語句,從而實現(xiàn)對SQLite數(shù)據(jù)庫中的表進行創(chuàng)建、插入、查詢、更新或刪除等操作。
例如:
“`c
#include
#include
#include
int mn(int argc, char* argv[])
{
sqlite3 *db;
char *zErrMsg = 0;
int rc = sqlite3_open(“test.db”, &db);
if (rc != SQLITE_OK){
printf(“Can’t open database: %s\n”, sqlite3_errmsg(db));
sqlite3_close(db);
return 1;
}
else{
printf(“Opened database successfully!\n”);
}
char *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, 0, 0, &zErrMsg);
if (rc != SQLITE_OK){
printf(“Operation fled: %s\n”, zErrMsg);
sqlite3_free(zErrMsg);
}
else{
printf(“Table created successfully!\n”);
}
sqlite3_close(db);
return 0;
}
“`
在上述示例中,我們使用CREATE TABLE語句創(chuàng)建了一個名為COMPANY的表,包括ID、NAME、AGE、ADDRESS和SALARY五個字段,其中ID字段為主鍵。如果創(chuàng)建成功,則輸出“Table created successfully!”。
插入數(shù)據(jù)
在創(chuàng)建了一個表之后,我們需要向其中插入數(shù)據(jù)。這可以使用INSERT INTO語句實現(xiàn)。
例如:
“`c
#include
#include
#include
int mn(int argc, char* argv[])
{
sqlite3 *db;
char *zErrMsg = 0;
int rc = sqlite3_open(“test.db”, &db);
if (rc != SQLITE_OK){
printf(“Can’t open database: %s\n”, sqlite3_errmsg(db));
sqlite3_close(db);
return 1;
}
else{
printf(“Opened database successfully!\n”);
}
char *sql = “INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) “
“VALUES (1, ‘Paul’, 32, ‘California’, 20230.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’, 20230.00 );”
“INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)”
“VALUES (4, ‘Mark’, 25, ‘Rich-Mond’, 65000.00 );”;
rc = sqlite3_exec(db, sql, 0, 0, &zErrMsg);
if (rc != SQLITE_OK){
printf(“Operation fled: %s\n”, zErrMsg);
sqlite3_free(zErrMsg);
}
else{
printf(“Records created successfully!\n”);
}
sqlite3_close(db);
return 0;
}
“`
在上述示例中,我們向COMPANY表中插入了四條記錄,并使用VALUES子句指定了每個記錄中ID、NAME、AGE、ADDRESS和SALARY這五個字段的值。如果插入成功,則輸出“Records created successfully!”。
查詢數(shù)據(jù)
查詢數(shù)據(jù)是SQLite數(shù)據(jù)庫操作的重要部分。我們可以使用SELECT語句來從表中獲取數(shù)據(jù)。
例如:
“`c
#include
#include
#include
static int callback(void *NotUsed, int argc, char **argv, char **azColName){
int i;
for(i=0; i
printf(“%s = %s\n”, azColName[i], argv[i] ? argv[i] : “NULL”);
}
printf(“\n”);
return 0;
}
int mn(int argc, char* argv[])
{
sqlite3 *db;
char *zErrMsg = 0;
int rc;
rc = sqlite3_open(“test.db”, &db);
if (rc != SQLITE_OK){
printf(“Can’t open database: %s\n”, sqlite3_errmsg(db));
sqlite3_close(db);
return 1;
}
else{
printf(“Opened database successfully!\n”);
}
char *sql = “SELECT * from COMPANY”;
rc = sqlite3_exec(db, sql, callback, 0, &zErrMsg);
if (rc != SQLITE_OK){
printf(“Operation fled: %s\n”, zErrMsg);
sqlite3_free(zErrMsg);
}
sqlite3_close(db);
return 0;
}
“`
在上述示例中,我們使用SELECT *語句來查詢COMPANY表中的所有數(shù)據(jù),并為sqlite3_exec()函數(shù)提供了一個回調(diào)函數(shù),用于處理每一行查詢結(jié)果。在回調(diào)函數(shù)中,我們只是簡單地使用printf()函數(shù)輸出了查詢結(jié)果,如果查詢成功,則在查詢結(jié)果后輸出一個空行。
更新數(shù)據(jù)
更新數(shù)據(jù)也常常是SQLite數(shù)據(jù)庫操作的重要部分。我們可以使用UPDATE語句來更新表中的數(shù)據(jù)。
例如:
“`c
#include
#include
#include
int mn(int argc, char* argv[])
{
sqlite3 *db;
char *zErrMsg = 0;
int rc;
rc = sqlite3_open(“test.db”, &db);
if (rc != SQLITE_OK){
printf(“Can’t open database: %s\n”, sqlite3_errmsg(db));
sqlite3_close(db);
return 1;
}
else{
printf(“Opened database successfully!\n”);
}
char *sql = “UPDATE COMPANY set SALARY = 25000.00 where ID=1; “
“SELECT * from COMPANY”;
rc = sqlite3_exec(db, sql, 0, 0, &zErrMsg);
if (rc != SQLITE_OK){
printf(“Operation fled: %s\n”, zErrMsg);
sqlite3_free(zErrMsg);
}
else{
printf(“Operation done successfully!\n”);
}
sqlite3_close(db);
return 0;
}
“`
在上述示例中,我們使用UPDATE語句將COMPANY表中ID為1的記錄的SALARY字段更新為25000.00,并使用SELECT語句查詢表中所有的數(shù)據(jù),以驗證更新的結(jié)果。如果更新成功,則輸出“Operation done successfully!”。
刪除數(shù)據(jù)
刪除數(shù)據(jù)也是SQLite數(shù)據(jù)庫操作的一種重要部分。我們可以使用DELETE語句來從表中刪除數(shù)據(jù)。
例如:
“`c
#include
#include
#include
int mn(int argc, char* argv[])
{
sqlite3 *db;
char *zErrMsg = 0;
int rc;
rc = sqlite3_open(“test.db”, &db);
if (rc != SQLITE_OK){
printf(“Can’t open database: %s\n”, sqlite3_errmsg(db));
sqlite3_close(db);
return 1;
}
else{
printf(“Opened database successfully!\n”);
}
char *sql = “DELETE from COMPANY where ID=2; “
“SELECT * from COMPANY”;
rc = sqlite3_exec(db, sql, 0, 0, &zErrMsg);
if (rc != SQLITE_OK){
printf(“Operation fled: %s\n”, zErrMsg);
sqlite3_free(zErrMsg);
}
else{
printf(“Operation done successfully!\n”);
}
sqlite3_close(db);
return 0;
}
“`
在上述示例中,我們使用DELETE語句刪除了COMPANY表中ID為2的記錄,并使用SELECT語句查詢表中所有的數(shù)據(jù),以驗證刪除的結(jié)果。如果刪除成功,則輸出“Operation done successfully!”。
結(jié)論
相關(guān)問題拓展閱讀:
- 如何創(chuàng)建sqlite數(shù)據(jù)庫
如何創(chuàng)建sqlite數(shù)據(jù)庫
MySQL云激腔螞弊數(shù)據(jù)庫創(chuàng)建、配置與使用教程,明物衫五秒鐘創(chuàng)建屬于自己的mysql云數(shù)據(jù)庫,申請
方山侍法/步驟
首先下載 Navicat for SQLite,下載后解壓縮。
運行navicat.exe 這個主純絕程序,在左上角點擊連接
在彈出窗口中輸入連接名,選擇類型,然后在下面選擇數(shù)據(jù)庫文件,或者數(shù)據(jù)庫保存位置。
這樣就做唯姿在指定位置創(chuàng)建了一個Sqlite數(shù)據(jù)庫文件了
上次剛接觸SqlLite,不知道怎么創(chuàng)建數(shù)據(jù)庫,現(xiàn)在做下總結(jié):
界面和MYSQL一樣,都是CMD界面,但不是在SQLite.exe中創(chuàng)建數(shù)據(jù)庫:
首先還是說一下cmd下sqlite的使用網(wǎng)上已經(jīng)很多了、不做過多的贅述。大致說一下相應(yīng)的命令就行了、作為學(xué)習(xí)sqlite的一個記錄
1:選擇下載對應(yīng)自己系統(tǒng)的sqlite.3exe文件
2:解灶散壓后使用cmd命令進入sqlite3.exe文件所在的路徑執(zhí)行命令就可以操作做相應(yīng)的操作。
在進入數(shù)據(jù)庫之后如果需要退出的話windows下摁ctrl+c就能退出
例如:
創(chuàng)建數(shù)據(jù)庫命令:sqlite3.exe【數(shù)據(jù)庫名字.后綴名】
這里比較牛一點的感覺就是創(chuàng)建的數(shù)據(jù)庫后綴名是任意的、不過注意一點就是:在命令框下執(zhí)行創(chuàng)建數(shù)據(jù)庫的時候。
如果沒有為數(shù)據(jù)庫創(chuàng)建表格、則看不見數(shù)據(jù)庫文件,所以必須創(chuàng)建表格。
例如:在CMD命令提示符下輸入sqlite3.exetest.db(test.db是數(shù)據(jù)庫名)回車,執(zhí)行完后,命令提示符自動跳轉(zhuǎn)
到”SQLITE>”狀態(tài)。這時還是看不到這個數(shù)據(jù)庫!等表格創(chuàng)建或關(guān)閉sqlite3
例如:createtableuser(’用戶名‘);這時可以看到sqlite3.exe所在文件夾下的這個數(shù)據(jù)庫文件了
如果下次還要使用此數(shù)據(jù)庫時仍然使用sqlite3.exetest.db即可進入此數(shù)據(jù)庫
創(chuàng)建表格命令:createtabletablename(字段,字段)
這里從命令上可以清楚的純正看到、在sqlite數(shù)據(jù)庫中創(chuàng)建表格字段的時候、允許不為字段申明數(shù)據(jù)類型。
這是區(qū)別于其它關(guān)系型數(shù)據(jù)庫的。
執(zhí)行插入命令:insertintotablenamevalues(value,values)在、前做辯悔面我們可以看出、sqlite的操作上和
sqlserver沒什么太大區(qū)別、值得注意的是、insert時區(qū)別于sqlserver中、因為sqlserver中允許使用
“inserttablenamevalues(value,value)”這樣的省略式擦入。但是sqlite中是不允許使用省略式插入語句的。
執(zhí)行刪除語句:deletefromtablenamewhere
刪除數(shù)據(jù)語法和sqlserver相同、
刪除表則命令為:droptabletablename
數(shù)據(jù)更新命令:updatetablenameset字段=值如果需要條件的話、添加上where語句。
執(zhí)行查詢語句:select*fromtablename可跟隨where語句
以上就是基礎(chǔ)的sqlite的增刪查改語法和命令。
關(guān)于c sqlite數(shù)據(jù)庫操作的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
成都網(wǎng)站營銷推廣找創(chuàng)新互聯(lián),全國分站站群網(wǎng)站搭建更好做SEO營銷。
創(chuàng)新互聯(lián)(www.cdcxhl.com)四川成都IDC基礎(chǔ)服務(wù)商,價格厚道。提供成都服務(wù)器托管租用、綿陽服務(wù)器租用托管、重慶服務(wù)器托管租用、貴陽服務(wù)器機房服務(wù)器托管租用。
網(wǎng)頁名稱:C語言中操作SQLite數(shù)據(jù)庫的基本方法介紹 (c sqlite數(shù)據(jù)庫操作)
鏈接URL:http://fisionsoft.com.cn/article/djesjho.html


咨詢
建站咨詢
