導航:首頁 > 編程語言 > linuxsqlite編程

linuxsqlite編程

發布時間:2022-08-16 14:41:11

㈠ c語言在linux連接sqlite3問題

如果是在編譯階段出現問題則是沒有引用頭文件
如果是鏈接階段則是沒有鏈接sqlite庫
簡單來說
gcc
test.c
-lsqlite3
這樣編譯,
test.c裡面引用#include
要保證有這個文件
/usr/include/sqlite3.h
(如果位置不對則使用
-I
參數調整)
這只是最原始的辦法,
稍微好點的是使用gcc
test.c
`pkg-config
--libs
--cfalgs
sqlite3`這類形式
具體參考pkg-config這個工具
真實項目中一般都不會這樣用,有專門的工程管理工具如autoconfig,cmake之類的。
對於初學者
建議去熟悉
編譯和鏈接這2個過程的一些介紹,和gcc
的-I
-L
這2個參數。

㈡ linux下C語言操作sqlite資料庫的問題

拜託 char *sql = " CREATE TABLE SensorData(ID INTEGER PRIMARY KEY,SensorID INTEGER,SiteNum INTEGER,Time VARCHAR(12),SensorParameter REAL);" ;
這里是你的sql聲明處
隱式的轉換位const char *sql
你後面又對sql進行賦值 也就是對.rodata段進行寫操作 不段錯誤才怪

想要用原么分配一個大點的buff char sql[512];
要麼動態分配(沒必要)

㈢ 在 linux shell下使用 sqlite3疑問

sqlite3 命令後面要指定資料庫文件的名字,若沒指定會創建內存資料庫;
但內存資料庫在命令退出後完成使命而消失,不保存任何內容在磁碟。

tim@tim-Vostro-200:~$ sqlite3 test.db
sqlite> create table a(id int primary key );
sqlite> .tables
a
sqlite> .quit
tim@tim-Vostro-200:~$ sqlite3 test.db
sqlite> .tables
a
sqlite> .quit
tim@tim-Vostro-200:~$ sqlite3
sqlite> attach 'test.db' as cc;
sqlite> create table cc.b(id int primary key );
sqlite> .quit
tim@tim-Vostro-200:~$ sqlite3 test.db
sqlite> .tables
a b
sqlite> .quit
$

㈣ 如何在Linux中向sqlite3資料庫中插入數據

0. 引言 我們這篇文章主要講述了如何在C/C++語言中調用 sqlite 的函數介面來實現對資料庫的管理, 包括創建資料庫、創建表格、插入數據、查詢數據、刪除數據等。 1. 說明 這里我們假設你已經編譯好了sqlite的庫文件 : libsqlite3.a libsqlite3.la libsqlite3.so libsqlite3.so.0 libsqlite3.so.0.8.6 pkgconfig 和可執行文件 : sqlite3 我們再假設你的sqlite3的安裝目錄在 /usr/local/sqlite3 目錄下。 如果不是,我們可以這樣做,將你的安裝文件復制到 /usr/local/sqlite3 這個目錄, 這樣我們好在下面的操作中更加統一,從而減少出錯的概率 例如:[root@localhost home]# cp -rf sqlite-3.3.8-ix86/ /usr/local/sqlite3 這里假設 /home/sqlite-3.3.8-ix86/ 是你的安裝目錄,也就是說你的sqlite原來就是安裝在這里 這樣之後,我們的sqlite3的庫文件目錄是:/usr/local/sqlite3/lib 可執行文件 sqlite3 的目錄是: /usr/local/sqlite3/bin 頭文件 sqlite3.h 的目錄是: /usr/local/sqlite3/include 好拉,現在開始我們的Linux下sqlite3編程之旅。 2. 開始 這里我們現在進行一個測試。 現在我們來寫個C/C++程序,調用 sqlite 的 API 介面函數。 下面是一個C程序的例子,顯示怎麼使用 sqlite 的 C/C++ 介面. 資料庫的名字由第一個參數取得且第二個參數或更多的參數是 SQL 執行語句. 這個函數調用sqlite3_open() 在 16 行打開資料庫,並且sqlite3_close() 在 25 行關閉資料庫連接。 [root@localhost temp]# vi opendbsqlite.c 按下i 鍵切換到輸入模式,輸入下列代碼:// name: opendbsqlite.c // This prog is used to test C/C++ API for sqlite3.It is very simple,ha! // Author : zieckey All rights reserved. // data : 2006/11/13 #include <stdio.h> #include <sqlite3.h> int main( void ) { sqlite3 *db=NULL; char *zErrMsg = 0; int rc; //打開指定的資料庫文件,如果不存在將創建一個同名的資料庫文件 rc = sqlite3_open("zieckey.db", &db); if( rc ) { fprintf(stderr, "Can't open database: %s ", sqlite3_errmsg(db)); sqlite3_close(db); exit(1); } else printf("You have opened a sqlite3 database named zieckey.db successfully! Congratulations! Have fun ! ^-^ "); sqlite3_close(db); //關閉資料庫 return 0; } 退出,保存。(代碼輸入完成後,按下 Esc 鍵,然後輸入: :wq ,回車就好拉) 好拉,現在編譯:[root@localhost temp]# gcc opendbsqlite.c -o db.out 或者遇到這樣的問題:[root@localhost temp]# gcc opendbsqlite.c -o db.out opendbsqlite.c:11:21: sqlite3.h: 沒有那個文件或目錄 opendbsqlite.c: In function `main': opendbsqlite.c:19: `sqlite3' undeclared (first use in this function) opendbsqlite.c:19: (Each undeclared identifier is reported only once opendbsqlite.c:19: for each function it appears in.) opendbsqlite.c:19: `db' undeclared (first use in this function) 這是由於沒有找到頭文件的原因。 也許會碰到類似這樣的問題:[root@localhost temp]# gcc opendbsqlite.c -o db.out /tmp/ccTkItnN.o(.text+0x2b): In function `main': : undefined reference to `sqlite3_open' /tmp/ccTkItnN.o(.text+0x45): In function `main': : undefined reference to `sqlite3_errmsg' /tmp/ccTkItnN.o(.text+0x67): In function `main': : undefined reference to `sqlite3_close' /tmp/ccTkItnN.o(.text+0x8f): In function `main': : undefined reference to `sqlite3_close' collect2: ld returned 1 exit status 這是個沒有找到庫文件的問題。 下面我們著手解決這些問題。 由於用到了用戶自己的庫文件,所用應該指明所用到的庫,我們可以這樣編譯: [root@localhost temp]# gcc opendbsqlite.c -o db.out -lsqlite3 我用用 -lsqlite3 選項就可以了(前面我們生成的庫文件是 libsqlite3.so.0.8.6 等, 去掉前面的lib和後面的版本標志,就剩下 sqlite3 了所以是 -lsqlite3 )。 如果我們在編譯安裝的時候,選擇了安裝路徑,例如這樣的話:....... # ../sqlite/configure --prefix=/usr/local/sqlite3 # make .......作者:zieckey
insert into thetable values (...)

㈤ linux 怎麼編譯 sqlite

SQLite的基本語法
這一章我們將會學習到sqlite的基本語法,sqlite的語法現象和SQL92是比較相象的,
或者說sqlite3兼容大部份SQL92的語法現象。
下面我們看看怎麼用這些語法現象來創建資料庫以及對資料庫的各種操作。
2.1 新建一個資料庫
例如我們想新建一個資料庫命名為zieckey.db ,可以直接在shell下輸入 sqlite3 zieckey.db ,
前提是:先進放sqlite的安裝文件夾下然後執行下面的操作:
# ./sqlite3 zieckey.db
SQLite version 3.0.8
Enter ".help" for instructions
sqlite>
這里 SQLite version 3.0.8 是SQLite的版本信息。也就是說本文使用的sqlite版本為 version 3.0.8 .
這樣就創建了一個新的資料庫文件,命名為 zieckey.db
2.2 創建表和插入值
剛剛我們創建了一個新的資料庫zieckey.db,加入我們想在其中新建一個名為 SensorData 的表,其包含五個列元素。
可以用CREATE TABLE語法命令。
CREATE TABLE語句基本上就是"CREATE TABLE"關鍵字後跟一個新的表名以及括弧內的一堆定義和約束。表名可以是字元串或者標識符。以"sqlite_"開頭的表名是留給sqlite資料庫引擎使用的。每個欄位的定義是欄位名後跟欄位的數據類型,接著是一個或多個的欄位約束。欄位的 數據類型並不限制欄位中可以存放的數據。更多信息,參見sqlite的CREATE TABLE語法。
這里具體作法如下:
# sqlite3 zieckey.db
SQLite version 3.0.8
Enter ".help" for instructions
sqlite> CREATE TABLE SensorData(
...> ID INTEGER PRIMARY KEY,
...> SensorID INTEGER,
...> SiteNum INTEGER,
...> Time VARCHAR(12),
...> SensorParameter REAL
...> );
注意sqlite下除了特殊命令都要以分號 「;」 結尾,否則它將一直等待第一個分號的出現才判斷這條命令結束。
現在我們可以用 schema 命令看看我們剛剛創建的表。具體作法如下:
sqlite> .schema
CREATE TABLE SensorData(
ID INTEGER PRIMARY KEY,
SensorID INTEGER,
SiteNum INTEGER,
Time VARCHAR(12),
SensorParameter REAL
);
sqlite>
.schema 是用來查看資料庫中所有的表的定義內容。如果後面跟了具體的表名稱,則顯示該表的內容。
假如我們想想SensorData表中插入具體列元素值,該怎麼辦呢?這里可以用INSERT語句。
INSERT語句有兩種基本形式。一種帶有"VALUES"關鍵字,在已有表中插入一個新的行。若不定義欄位列表,那麼值的數目將與表中的欄位數目相同。否則值的數目須與欄位列表中的欄位數目相同。不在欄位列表中的欄位被賦予預設值或NULL(當未定義預設值)。
INSERT的第二種形式從SELECT語句中獲取數據。若未定義欄位列表,則從SELECT得到的欄位的數目必須與表中的欄位數目相同,否則應與定義的欄位列表中的欄位數目相同。SELECT的每一行結果在表中插入一個新的條目。SELECT可以是簡單的或者復合的。如果SELECT語句帶有 ORDER BY子句,ORDER BY會被忽略。
這里我們可以這樣做:
sqlite> INSERT INTO "SensorData" VALUES(NULL, 1, 0, '200605011206', 18.9);
sqlite> INSERT INTO "SensorData" VALUES(2, 1, 0, '200605011306', 16.4);
sqlite> INSERT INTO "SensorData" VALUES(3, 1, 0, '200605011406', 15.3);
sqlite> INSERT INTO "SensorData" VALUES(4, 1, 0, '200605011506', 15.5);
sqlite>
很簡單對不對?簡直太easy了。
2.3 在線幫助
前面兩節,我們已經知道了sqlite語法最基本的用法。下面可以看看如何獲得聯機幫助。
很簡單,輸入 .help 就行了。注意要help前加上「.」,這與上面說的以分號結尾有點不同,因為help命令被視為特殊命令。
sqlite> .help
.databases List names and files of attached databases
.mp ?TABLE? ... Dump the database in an SQL text format
.echo ON|OFF Turn command echo on or off
.exit Exit this program
.explain ON|OFF Turn output mode suitable for EXPLAIN on or off.
.header(s) ON|OFF Turn display of headers on or off
.help Show this message
.import FILE TABLE Import data from FILE into TABLE
.indices TABLE Show names of all indices on TABLE
.mode MODE ?TABLE? Set output mode where MODE is on of:
csv Comma-separated values
column Left-aligned columns. (See .width)
html HTML <table> code
insert SQL insert statements for TABLE
line One value per line
list Values delimited by .separator string
tabs Tab-separated values
tcl TCL list elements
.nullvalue STRING Print STRING in place of NULL values
.output FILENAME Send output to FILENAME
.output stdout Send output to the screen
.prompt MAIN CONTINUE Replace the standard prompts
.quit Exit this program
.read FILENAME Execute SQL in FILENAME
.schema ?TABLE? Show the CREATE statements
.separator STRING Change separator used by output mode and .import
.show Show the current values for various settings
.tables ?PATTERN? List names of tables matching a LIKE pattern
.timeout MS Try opening locked tables for MS milliseconds
.width NUM NUM ... Set column widths for "column" mode
sqlite>
這里看到的命令都帶有「.」開頭,或者說sqlite下,只有這些命令是需要帶「.」的。我們會經常用到的命令有:
.output FILENAME
.output stdout
.quit
.read FILENAME
.schema ?TABLE?
.mp ?TABLE? ...
.echo ON|OFF
.exit
在下面會涉及到這些具體內容的。我們慢慢來。

2.4 查看當前資料庫下的所有表
當資料庫越來越大時,我們也許並不太記得資料庫中有多少個表了,這時就需要查看當前資料庫下的有些什麼表。
我們可以用 .tables 命令 。
sqlite> .tables
SensorData
sqlite>
2.5 退出sqlite3
對於初學者,也許不知道怎麼安全退出,不過如果是從頭看到此處的讀者也許已經知道了,
因為剛才 .help 命令已經告訴我們答案了。安全退出有兩個命令:.exit 和 .quit
好了,我們已經新建一個名為zieckey.db的資料庫,並在其中新建一個名為 SensorData 的表.
現在我們想退出,那麼可以用到剛剛提到的 .exit 和 .quit 命令。
例如我們可以這樣退出:
sqlite> .exit
這里需要說明一下,如果不是用 .exit 和 .quit 這兩個命令退出,我們對資料庫的修改有可能丟失。

㈥ linux中sqlite3 參數綁定怎麼解決亂碼

Sqlite默認保存數據是用UTF8格式,而現有程序開發工具都是默認GB2312的格式,所以你編程寫的中文不轉碼直接寫到庫里後,用任何資料庫工具看肯定都是亂碼。但是讀出來之後仍然是GB2312,所以顯示正常。反之如果你用資料庫工具寫中文,則默認存UTF

㈦ 如何在Linux下用C語言操作資料庫sqlite3

下面我們看看怎麼在C語言中向資料庫插入數據。
好的,我們現編輯一段c代碼,取名為 insert.c
// name: insert.c
// This prog is used to test C/C++ API for sqlite3 .It is very simple,ha !
// Author : zieckey All rights reserved.
// data : 2006/11/18
#include <stdio.h>
#include <stdlib.h>
#include "sqlite3.h"
#define _DEBUG_
int main( void )
{
sqlite3 *db=NULL;
char *zErrMsg = 0;
int rc;
rc = sqlite3_open("zieckey.db", &db); //打開指定的資料庫文件,如果不存在將創建一個同名的資料庫文件
if( rc )
{
fprintf(stderr, "Can't open database: %s
", sqlite3_errmsg(db));
sqlite3_close(db);
exit(1);
}
else printf("You have opened a sqlite3 database named zieckey.db successfully!
Congratulations! Have fun ! ^-^
");
//創建一個表,如果該表存在,則不創建,並給出提示信息,存儲在 zErrMsg 中
char *sql = " CREATE TABLE SensorData(
ID INTEGER PRIMARY KEY,
SensorID INTEGER,
SiteNum INTEGER,
Time VARCHAR(12),
SensorParameter REAL
);" ;
sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );
#ifdef _DEBUG_
printf("%s
",zErrMsg);
#endif
//插入數據
sql = "INSERT INTO "SensorData" VALUES( NULL , 1 , 1 , '200605011206', 18.9 );" ;
sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );
sql = "INSERT INTO "SensorData" VALUES( NULL , 1 , 1 , '200605011306', 16.4 );" ;
sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );
sqlite3_close(db); //關閉資料庫
return 0;
}

好的,將上述代碼寫入一個文件,並將其命名為 insert.c 。
解釋:
sqlite3_exec的函數原型說明如下:
int sqlite3_exec(
sqlite3*,
const char *sql,
sqlite_callback,
void *,
char **errms

g
);

編譯:
[root@localhost temp]# gcc insert.c -lsqlite3 -L/usr/local/sqlite3/lib -I/usr/local/sqlite3/include
insert.c:28:21: warning: multi-line string literals are deprecated
[root@localhost temp]#
執行
[root@localhost temp]# ./a.out
./a.out: error while loading shared libraries: libsqlite3.so.0: cannot open shared object file: No such file or directory
[root@localhost temp]#
同樣的情況,如上文處理方法:
[root@localhost temp]# export LD_LIBRARY_PATH=/usr/local/sqlite3/lib:$LD_LIBRARY_PATH
[root@localhost temp]# ./a.out
You have opened a sqlite3 database named zieckey.db successfully!
Congratulations! Have fun ! ^-^
(null)
(null)
(null)
[root@localhost temp]#
運行成功了,好了,現在我們來看看是否插入了數據
[root@localhost temp]# /usr/local/sqlite3/bin/sqlite3 zieckey.db
SQLite version 3.3.8
Enter ".help" for instructions
sqlite> select * from SensorData;
1|1|1|200605011206|18.9

2|1|1|200605011306|16.4
sqlite>

㈧ sqlite3在linux下怎麼編譯

示例代碼: // name: query.c // This prog is used to test C/C++ API for sqlite3 .It is very simple,ha ! // Author : zieckey All rights reserved. // data : 2006/11/18 #include #include #include "sqlite3.h

閱讀全文

與linuxsqlite編程相關的資料

熱點內容
解壓新奇特視頻 瀏覽:702
圖書信息管理系統java 瀏覽:548
各種直線命令詳解 瀏覽:859
程序員淚奔 瀏覽:143
素材怎麼上傳到伺服器 瀏覽:513
android百度離線地圖開發 瀏覽:187
web可視化編程軟體 瀏覽:288
java筆試編程題 瀏覽:742
win11什麼時候可以裝安卓 瀏覽:560
java不寫this 瀏覽:999
雲點播電影網php源碼 瀏覽:96
pythonclass使用方法 瀏覽:226
移動加密軟體去哪下載 瀏覽:294
php彈出alert 瀏覽:209
吉林文檔課件加密費用 瀏覽:136
感測器pdf下載 瀏覽:289
隨車拍app綁定什麼設備 瀏覽:898
方維團購系統源碼 瀏覽:993
linux反彈shell 瀏覽:159
列印機介面加密狗還能用嗎 瀏覽:301