亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++操作SQLite簡明教程

2020-01-26 15:30:40
字體:
來源:轉載
供稿:網友

SQLite是一款輕型的本地文件數據庫,是遵守ACID的關聯式數據庫管理系統。它的設計目標是嵌入式的,而且目前已經在很多嵌入式產品中使用了它,它的功能強、速度快,它占用資源非常的低,在嵌入式設備中,可能只需要幾百K的內存就夠了。它能夠支持Windows/Linux/Unix等主流的操作系統,同時能夠跟很多程序語言相結合。

一、SQLite的數據類型

在進行數據庫操作之前,有個問題需要說明,就是SQLite的數據類型,和其他的數據庫不同,Sqlite支持的數據類型有他自己的特色:Typelessness(無類型)。 SQLite是無類型的,這意味著你可以保存任何類型的數據到你所想要保存的任何表的任何列中, 無論這列聲明的數據類型是什么。

而大多數的數據庫在數據類型上都有嚴格的限制,在建立表的時候,每一列都必須制定一個數據類型,只有符合該數據類型的數據可以被保存在這一列當中。而在SQLite 2.X中,數據類型這個屬性只屬于數據本生,而不和數據被存在哪一列有關,也就是說數據的類型并不受數據列限制(有一個例外:INTEGER PRIMARY KEY,該列只能存整型數據)。

但是當SQLite進入到3.0版本的時候,這個問題似乎又有了新的答案,SQLite的開發者開始限制這種無類型的使用,在3.0版本當中,每一列開始擁有自己的類型,并且在數據存入該列的時候,數據庫會試圖把數據的類型向該類型轉換,然后以轉換之后的類型存儲。當然,如果轉換被認為是不可行的,SQLite仍然會存儲這個數據,就像他的前任版本一樣。

舉個例子,如果你企圖向一個INTEGER類型的列中插入一個字符串,SQLite會檢查這個字符串是否有整型數據的特征, 如果有而且可以被數據庫所識別,那么該字符串會被轉換成整型再保存,如果不行,則還是作為字符串存儲。
誠然SQLite允許忽略數據類型, 但是仍然建議在你的Create Table語句中指定數據類型. 因為數據類型對于你和其他的程序員交流, 或者你準備換掉你的數據庫引擎時能起到一個提示或幫助的作用. SQLite支持常見的數據類型, 如:

1.NULL,值是NULL
2.INTEGER,值是有符號整形,根據值的大小以1,2,3,4,6或8字節存放
3.REAL,值是浮點型值,以8字節IEEE浮點數存放
4.TEXT,值是文本字符串,使用數據庫編碼(UTF-8,UTF-16BE或者UTF-16LE)
5.BLOB,只是一個數據塊,完全按照輸入存放(即沒有準換)

SQLite的操作接口

SQLite的2個重要結構體:

sqlite3 *pdb,數據庫句柄,跟文件句柄FILE很類似
sqlite3_stmt *stmt,這個相當于ODBC的Command對象,用于保存編譯好的SQL語句

SQLite的5個主要的函數:

sqlite3_open(), 打開數據庫
sqlite3_exec(),執行非查詢的sql語句
sqlite3_prepare(),準備sql語句,執行select語句或者要使用parameter bind時,用這個函數(封裝了sqlite3_exec).
sqlite3_step(),在調用sqlite3_prepare后,使用這個函數在記錄集中移動。
sqlite3_close(),關閉數據庫文件

還有一系列的函數,用于從記錄集字段中獲取數據,如:

sqlite3_column_text(),取text類型的數據
sqlite3_column_blob(),取blob類型的數據
sqlite3_column_int(),取int類型的數據

C++使用前準備

下載SQLite,分別從http://www.sqlite.org/2013/sqlite-amalgamation-3071700.zip、 http://www.sqlite.org/2013/sqlite-dll-win32-x86-3071700.zip下載SQLite的源文件和庫文件。

但是sqlite-dll-win32-x86-3071700.zip中并沒有提供SQLite的lib文件,需要自己編譯生成。解壓sqlite-dll-win32-x86-3071700.zip到sqlite-dll-win32-x86-3071700目錄,再將VS安裝目錄下VC中的LIB.EXE、LINK.EXE、mspdb80.dll(這里用的是VS2008)拷貝到sqlite-dll-win32-x86-3071700,執行LIB.EXE /DEF:SQLITE3.DEF /MACHINE:IX86 就可以得到SQLITE3.LIB文件。

C++訪問SQLite

C++對SQLite進行操作的代碼如下:

復制代碼 代碼如下:

#include "stdafx.h"
#include <string.h>
using namespace std;

#include "sqlite3.h"
#pragma comment(lib, "SQLITE3.LIB")

static int SelectCallback(void *notUsed, int argc, char **argv, char **azColName)
{
 for (int i = 0 ; i < argc ; i++)
 {
 printf("%s = %s", azColName[i], (argv[i] ? argv[i] : "NULL"));
 if (i != argc -1)
 {
 printf(", ");
 }
 }
 printf("/n");
 return 0;
}

int _tmain(int argc, _TCHAR* argv[])
{
 sqlite3 * pDB;
 char* errMsg;

// 打開SQLite數據庫
 int res = sqlite3_open("sql.db", &pDB);
 if ( res != SQLITE_OK ){
 printf("Can't open database: %s/n", sqlite3_errmsg(pDB));
 sqlite3_close(pDB);
 return -1;
 }

// 創建表
 string strSQL= "create table test (id int, name text);";
 res = sqlite3_exec(pDB , strSQL.c_str() ,0 ,0, &errMsg);
 if (res != SQLITE_OK)
 {
 printf("Create table error: %s/n", errMsg);
 //return -1;
 }

// 插入數據
 res = sqlite3_exec(pDB,"begin transaction;",0,0, &errMsg);
 for (int i= 1; i < 10; ++i)
 {
 char sql[512];
 sprintf_s(sql, "insert into test values(%d, %s);", (i+10), "/"Test Name/"");

res = sqlite3_exec(pDB, sql,0,0, &errMsg);
 if (res != SQLITE_OK)
 {
 printf("Insert error: %s/n", errMsg);
 return -1;
 }
 }
 res = sqlite3_exec(pDB,"commit transaction;",0,0, &errMsg);

// 查詢數據
 strSQL= "select * from test;";
 res = sqlite3_exec(pDB, strSQL.c_str(), SelectCallback, 0 , &errMsg);
 if (res != SQLITE_OK)
 {
 printf("Select error: %s/n", errMsg);
 return -1;
 }

 // 關閉數據庫
 sqlite3_close(pDB);

return 0;
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品av在线播放| 中文字幕精品一区久久久久| 91在线中文字幕| 久久99精品久久久久久琪琪| 亚洲春色另类小说| 性欧美亚洲xxxx乳在线观看| 亚洲天堂开心观看| 成人中心免费视频| 欧美亚洲国产视频| 精品欧美国产一区二区三区| 91chinesevideo永久地址| 在线激情影院一区| 国产精品久久久久久久久久久不卡| 在线观看视频99| 国产精品男女猛烈高潮激情| 欧美极品少妇xxxxⅹ免费视频| 国产精品久久久久久亚洲调教| 久久国产精品99国产精| 国产精品三级久久久久久电影| 九九热r在线视频精品| 日韩美女在线观看一区| 亚洲淫片在线视频| 国产亚洲欧洲黄色| 色偷偷噜噜噜亚洲男人| 国产欧美精品xxxx另类| 人体精品一二三区| 亚洲欧洲视频在线| 伊人一区二区三区久久精品| 亚洲国产成人久久| 亚洲高清av在线| 91网站免费观看| 在线国产精品播放| 精品中文字幕乱| 日韩中文字幕在线视频| 久久久av电影| 亚洲三级黄色在线观看| 亚洲美女在线视频| 国产精品久久久久久久久久尿| 97在线免费观看| 国产精品video| 精品视频偷偷看在线观看| 日韩在线视频二区| 亚洲天堂一区二区三区| 久久人人爽人人爽人人片亚洲| 一区二区三区高清国产| 九九九热精品免费视频观看网站| 国产精品久久久久久久午夜| 成人黄色网免费| 2019中文在线观看| 久久久久久亚洲| 欧美性猛交xxxx乱大交3| 最近2019中文字幕第三页视频| 国产成人精品综合久久久| 欧日韩不卡在线视频| 亚洲自拍欧美色图| 亚洲精品国产电影| 久久久www成人免费精品| 97视频在线观看成人| 国产精品久久久久av免费| 国产精品成熟老女人| 亚洲一区二区三| 亚洲黄页网在线观看| 精品日韩视频在线观看| 日韩激情视频在线播放| 精品久久久久人成| 亚洲成人精品av| 一区二区三区精品99久久| 欧美午夜www高清视频| 亚洲欧美国产精品专区久久| 在线播放精品一区二区三区| 91九色视频导航| 亚洲欧美激情精品一区二区| 日韩高清av在线| 福利视频导航一区| 国产欧美日韩精品丝袜高跟鞋| 欧美色道久久88综合亚洲精品| 国产精品嫩草影院一区二区| 黑人巨大精品欧美一区免费视频| 精品日本高清在线播放| 久久高清视频免费| 日韩有码在线电影| 日韩的一区二区| 亚洲第一av在线| 欧美日韩一区免费| 国产精品久久久久久久久男| 亚洲第一视频在线观看| 国产精品久久久久久久久久久新郎| 亚洲福利精品在线| 久久99精品视频一区97| 国产成+人+综合+亚洲欧美丁香花| 久久黄色av网站| 国产成人aa精品一区在线播放| 国产一区二区三区日韩欧美| 国产精品美女免费视频| 91精品视频在线看| 欧美激情2020午夜免费观看| 欧美寡妇偷汉性猛交| 91精品国产91久久久久久最新| 日韩精品免费在线视频| 国产欧美va欧美va香蕉在| 欧美精品亚州精品| 亚洲人成在线观| 欧美专区在线播放| 欧美日韩性视频在线| 国产一区二区免费| 久久精品一本久久99精品| 国产婷婷色综合av蜜臀av| 欧美成人小视频| 亚洲日本欧美日韩高观看| 91亚洲va在线va天堂va国| 日韩av免费网站| 欧美精品videos另类日本| 欧美大片免费看| 精品亚洲一区二区三区在线播放| 成人免费在线网址| 亚洲一区二区三区在线视频| 精品国产视频在线| 久久精品中文字幕免费mv| 91精品在线观看视频| 亚洲精品电影在线观看| 欧美巨乳美女视频| 国产精品午夜国产小视频| 精品国产自在精品国产浪潮| 最近中文字幕日韩精品| 亚洲一区二区在线播放| 国产区精品视频| 国产精品美女在线观看| 亚洲精品美女久久久| 日本精品久久久久久久| 亚洲精品suv精品一区二区| 国产91精品久久久久久久| 2019中文字幕在线免费观看| 色婷婷av一区二区三区在线观看| 日韩精品中文字幕视频在线| 国产99久久久欧美黑人| 7777免费精品视频| 精品久久久久久久久久久久| 国内久久久精品| 亚洲成人1234| 国内揄拍国内精品少妇国语| 美女视频黄免费的亚洲男人天堂| 日韩美女视频免费在线观看| 久久夜色精品国产| 日韩av不卡在线| 国产主播喷水一区二区| 日韩国产高清污视频在线观看| 亚洲乱码一区av黑人高潮| 亚洲女同精品视频| 国产精品日韩在线一区| 久久精品一区中文字幕| 亚洲成人黄色网| 伊人久久久久久久久久久| 亚洲成人免费网站| 日韩极品精品视频免费观看| 久久久久久成人精品| 欧美日本亚洲视频| 日本aⅴ大伊香蕉精品视频| 欧美裸体视频网站| 国产精品久久久久久久美男| 日韩网站在线观看| 亚洲黄色在线看| 国产综合视频在线观看| 国产亚洲精品成人av久久ww| 久久躁日日躁aaaaxxxx|