日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Windows中SQLite的编译及编程

發布時間:2025/6/15 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Windows中SQLite的编译及编程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

網上很多大牛其實都寫了,這里只是為了記錄自己的學習情況,順便學習一下編譯生成靜態鏈接庫,進入正題

開發環境:Windows 10+VS2013。

開發語言:C/C++。


首先,要在C程序中使用SQLite,則需要編譯使用靜態庫.lib文件,然而官網只提供了sqlite3.dll和sqlite3.def文件,需要.lib才能使用。所以自己生成.lib文件。

下載sqlite-dll-win32-x86-3081002.zip和sqlite-amalgamation-201505200015.zip,前者包含sqlite3.dll和sqlite3.def文件,后者包含所需的頭文件

下載地址http://www.sqlite.org/download.html

將上述壓縮包解壓到文件夾,如F:/SQLite

接著打開CMD命令行。執行以下命令


cd f:\sqlite\sqlite-dll-win32-x86-3081002

f:\sqlite\sqlite-dll-win32-x86-3081002> lib /DEF:sqlite3.def

或者直接在對應文件夾處打開命令行,如在文件夾sqlite-dll-win32-x86-3081002里面按shift + 鼠標右鍵,選擇在此處打開命令窗口,然后輸入lib /DEF:sqlite3.def,即可。

?

運行成功會有如下打印。

Microsoft (R) Library Manager Version 6.00.8168

Copyright (C) Microsoft Corp 1992-1998. All rights reserve


LIB : warning LNK4068: /MACHINE not specified; defaulting
???Creating library sqlite3.lib and object sqlite3.exp

注意:如果不成功。如果提示lib不是內部或者外部命令,則在vs2013的安裝目錄下拷貝 vc/bin/lib.exe 和link.exe到sqlite3目錄下。如果提示缺少mspdb60.dll或者其他文件,則相應的找到拷貝到sqlite3目錄下即可。

此時已經編譯好了你要的靜態鏈接庫,即sqlite3.lib

接下來就是在相應的代碼里引用了

?創建win32控制臺工程SQLiteTest。
?sqlite3.h(在sqlite-amalgamation-3071300.zip壓縮包中)添加到工程。
?sqlite3.lib復制到工程文件夾下。
?工程屬性中添加sqlite3.lib庫依賴。

項目---屬性---鏈接器----輸入-----在附加依賴項中添加sqlite3.lib

?

?

?ps: 要將sqlite3.dll 和 exe放到同一個目錄下,同時要保持sqlite3.dll的版本和exe的版本保持一致。如果exe是32位程序,那么dll就使用sqlite3.32位的,exe是64位,那么sqlite3.dll就使用64位的。

#include "stdafx.h" #include "sqlite3.h" #include <iostream> using namespace std;int _tmain(int argc, _TCHAR* argv[]) {//打開路徑采用utf-8編碼 //如果路徑中包含中文,需要進行編碼轉換 int rc = 0;int i = 0;sqlite3 *db = NULL;char *sql = NULL;char *err = NULL;rc = sqlite3_open("sqlite3test.db", &db);if (rc){printf("\r\nopen database sqlite3test.db fail!\r\nERR: %s", sqlite3_errmsg(db));sqlite3_close(db);return -1;}printf("\r\nopen database sqlite3test.db ok!");sql = "create table stu(id int PRIMARY KEY,name text);";rc = sqlite3_exec(db, sql, NULL, NULL, &err);if (SQLITE_OK != rc){if (NULL != err){printf("\r\nSQL1 ERR:%s", err);sqlite3_free(err);return -1;}}sql = "insert into stu values (1, 'zhangsan');";rc = sqlite3_exec(db, sql, NULL, NULL, &err);if (SQLITE_OK != rc){if (NULL != err){printf("\r\nSQL2 ERR:%s", err);sqlite3_free(err);return -1;}printf("\r\n error insert");}sql = "insert into stu values (2, 'lisi');";rc = sqlite3_exec(db, sql, NULL, NULL, &err);if (SQLITE_OK != rc){if (NULL != err){printf("\r\nSQL2 ERR:%s", err);sqlite3_free(err);return -1;}printf("\r\n error insert");}sql = "select * from stu;";char **result;int nrow = 0, ncolumn = 0;rc = sqlite3_get_table(db, sql, &result, &nrow, &ncolumn, &err);if (SQLITE_OK != rc){if (NULL != err){printf("\r\nSQL3 ERR:%s", err);sqlite3_free(err);return -1;}printf("\r\n error select");}printf("\r\nrow: %d ,column: %d", nrow, ncolumn);for (i = 0; i<(nrow + 1)*ncolumn; i++){printf("\r\n %s\t %s", result[i++], result[i]);}sqlite3_free_table(result);sqlite3_close(db);return 0;




原文:https://blog.csdn.net/u014038534/article/details/45921273?
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

總結

以上是生活随笔為你收集整理的Windows中SQLite的编译及编程的全部內容,希望文章能夠幫你解決所遇到的問題。

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