ubuntu上使用sqlite3
生活随笔
收集整理的這篇文章主要介紹了
ubuntu上使用sqlite3
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Ubuntu版本:ubuntu-gnome-16.04-desktop-amd64,gnome版
sqlie:sqlite3
-----------------------------------------------------------------------------------
?
1. 安裝
1.1 下載源碼
https://www.sqlite.org/download.html
1.2 編譯安裝
1) ./configure
2) ./make
3) ./make install
注:如果用apt-get install sqlite3進行安裝,只會安裝bin文件,不會安裝庫、頭文件等。
1.3 查看是否安裝成功: sqlite3 --version
?
2. 測試
以下demo實現了:創建數據庫、創建表格、插入數據、查詢數據、刪除數據
gcc -o sqlite-test sqlite-test.c -lsqlite3
注:鏈接加上-lsqlite3
?
3. 代碼
// by baoli // 2017.05.15#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("test.db", &db); //打開指定的數據庫文件,如果不存在將創建一個同名的數據庫文件 if( rc ) { fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db)); sqlite3_close(db); exit(1); } else printf("\nYou have opened a sqlite3 database named test.db successfully!\n\n"); //創建一個表,如果該表存在,則不創建,并給出提示信息,存儲在 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_ if(zErrMsg != NULL) printf("zErrMsg = %s \n", zErrMsg); #endif //插入數據 sql = "INSERT INTO \"SensorData\" VALUES(NULL , 11 , 1 , '201705011206', 18.9 );" ; sqlite3_exec( db , sql , 0 , 0 , &zErrMsg ); sql = "INSERT INTO \"SensorData\" VALUES(NULL , 23 , 45 , '201705011306', 16.4 );" ; sqlite3_exec( db , sql , 0 , 0 , &zErrMsg ); sql = "INSERT INTO \"SensorData\" VALUES(NULL , 34 , 45 , '201705011306', 15.4 );" ; sqlite3_exec( db , sql , 0 , 0 , &zErrMsg ); int nrow = 0, ncolumn = 0; char **azResult; //二維數組存放結果 //查詢數據 /* int sqlite3_get_table(sqlite3*, const char *sql,char***result , int *nrow , int *ncolumn ,char **errmsg ); result中是以數組的形式存放你所查詢的數據,首先是表名,再是數據。 nrow ,ncolumn分別為查詢語句返回的結果集的行數,列數,沒有查到結果時返回0 */ //查詢數據 sql = "SELECT * FROM SensorData "; sqlite3_get_table( db , sql , &azResult , &nrow , &ncolumn , &zErrMsg ); #ifdef _DEBUG_ if(zErrMsg != NULL) printf("zErrMsg = %s \n", zErrMsg); #endif int i = 0 ,j = 0, k = 0 ;printf( "row=%d column=%d \n" , nrow , ncolumn ); printf( "The result of query is : \n" ); // for( i=0 ; i<( nrow + 1 ) * ncolumn ; i++ ) // printf( "azResult[%d] = %s\n", i , azResult[i] ); for(i = 0; i < nrow + 1; i++){for(j = 0; j < ncolumn; j ++){printf("%-15s ", azResult[k++]);}printf("\n");}k = 0;//刪除數據 sql = "DELETE FROM SensorData WHERE SensorID = 11 ;" ; sqlite3_exec( db , sql , 0 , 0 , &zErrMsg ); #ifdef _DEBUG_ if(zErrMsg != NULL) printf("zErrMsg = %s \n", zErrMsg); #endif sql = "SELECT * FROM SensorData "; sqlite3_get_table( db , sql , &azResult , &nrow , &ncolumn , &zErrMsg ); printf( "\n\nrow=%d column=%d " , nrow , ncolumn ); printf( "\nAfter deleting , the result of querying is :\n" ); for(i = 0; i < nrow + 1; i++){for(j = 0; j < ncolumn; j ++){printf("%-15s ", azResult[k++]);}printf("\n");} k = 0;//釋放掉 azResult 的內存空間 sqlite3_free_table( azResult ); #ifdef _DEBUG_ if(zErrMsg != NULL) printf("zErrMsg = %s \n", zErrMsg); #endif sqlite3_close(db); //關閉數據庫 return 0; }?
總結
以上是生活随笔為你收集整理的ubuntu上使用sqlite3的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 票据包括
- 下一篇: ubuntu18.04安装pycharm