• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • sqlite學習筆記(1)環境搭建

     

    一、       命令運行平臺

    學習一樣新的先要把環境平臺搭建起來,然后自己多實踐才能領悟的更快一點。初學時可以參考《sqlite3權威指南》。

    首先去官網下載sqlite-tools-win32-x86-3190300.zipsqlite-dll-win64-x64-3200100.zip(注意我的是64位的,如果是32位的下載x86版)

    然后在d盤創建一個文件夾D:\sqlite3,把 sqlite3.defsqlite3.dllsqlite3.exe三個文件放進去。打開cmd,先進入D盤,再cd進入sqlite3目錄,再運行sqlite3.exe,敲命令時只需敲前幾個字母,再按tab鍵就會自動補齊。如下圖創建成功。

    clip_image002[4]

    然后創建數據庫,出錯

    clip_image004[4]

    這是因為之前運行了sqlite3.exe,現在表示數據庫狀態,怎么能在數據庫里創建數據庫呢,按ctrl+c退回原目錄,再創建數據庫就可以了,這時還看不到創建的db文件,一定要先創建一張表之后,才能在目錄下看到文件。

       輸入sqlite3.exe test.db

     create table test (id integer primary key, value text);

    clip_image006[4]

    這里要注意一點,命令是沒“;”的,sql語句是有“;”的

    下面是基本命令介紹:

    .dump:這個就是輸出你之前對數據庫的各種操作命令

    .output stdout:輸出到屏幕上

    .output file.sql:輸出到file.sql文件

    .read file.sql:把文件里的命令導入到當前數據庫并執行

    如果命令符是在安裝目錄,可以這樣D:\sqlite3>sqlite3.exe test.db < file.sql,這樣就把file.sql導入到test.db里。

    二、       visul stdio 2010平臺

    這個主要參考http://blog.csdn.net/hyxiaohaiyang/article/details/7382551

       在官網下載sqlite-amalgamation-3180000.zip,里面有sqlite3.h文件,首先把從VS2010的安裝目錄下Microsoft Visual Studio 10.0\VC\bin找到lib.exelink.exe,從VS2010的安裝目錄下Microsoft Visual Studio 10.0\Common7\IDE找到mspdb100.dll。將lib.exe link.exe mspdb100.dll放到上文所說的D:\sqlite3文件夾里,在D:\sqlite3目錄下運行lib /def:sqlite3.def,將會生成sqlite3.lib文件。

    clip_image008[4]

    然后在vs里新建win32控制臺應用工程,選空項目,然后把sqlite3.hsqlite3.lib復制到源碼目錄,然后添加一個cpp文件,并把輸入以下測試代碼,現在先不管代碼的意思

    #include <stdio.h>
    #include "sqlite3.h"
    
    //查詢的回調函數聲明
    int select_callback(void * data, int col_count, char ** col_values,
    		char ** col_Name);
    
    int main(int argc, char * argv[])
    {
    	const char * sSQL1 =
    			"create table users(userid varchar(20) PRIMARY KEY, age int, birthday datetime);";
    	char * pErrMsg = 0;
    	int result = 0;
    	// 連接數據庫
    	sqlite3 * db = 0;
    	int ret = sqlite3_open("./test.db", &db);
    	if (ret != SQLITE_OK)
    	{
    		fprintf(stderr, "無法打開數據庫: %s", sqlite3_errmsg(db));
    		return (1);
    	}
    	printf("數據庫連接成功!\n");
    
    	// 執行建表SQL
    	sqlite3_exec(db, sSQL1, 0, 0, &pErrMsg);
    	if (ret != SQLITE_OK)
    	{
    		fprintf(stderr, "SQL error: %s\n", pErrMsg);
    		sqlite3_free(pErrMsg);
    	}
    
    	// 執行插入記錄SQL
    	result = sqlite3_exec(db, "insert into users values('張三',20,'2011-7-23');",
    			0, 0, &pErrMsg);
    	if (result == SQLITE_OK)
    	{
    		printf("插入數據成功\n");
    	}
    	result = sqlite3_exec(db, "insert into users values('李四',20,'2012-9-20');",
    			0, 0, &pErrMsg);
    	if (result == SQLITE_OK)
    	{
    		printf("插入數據成功\n");
    	}
    
    	// 查詢數據表
    	printf("查詢數據庫內容\n");
    	sqlite3_exec(db, "select * from users;", select_callback, 0, &pErrMsg);
    
    	// 關閉數據庫
    	sqlite3_close(db);
    	db = 0;
    	printf("數據庫關閉成功!\n");
    
    	return 0;
    }
    
    int select_callback(void * data, int col_count, char ** col_values,
    		char ** col_Name)
    {
    	// 每條記錄回調一次該函數,有多少條就回調多少次
    	int i;
    	for (i = 0; i < col_count; i++)
    	{
    		printf("%s = %s\n", col_Name[i],
    				col_values[i] == 0 ? "NULL" : col_values[i]);
    	}
    
    	return 0;
    }
    


    然后必須把sqlite.lib添加到工程里,lib有兩種,靜態的不需要dll,動態的需要鏈接dll,這里是動態的lib

    clip_image010[4]

    編譯整個工程,出現LINK:fatal error LNK1123:轉換到 COFF期間失敗:文件無效或損壞,出現這個問題參考http://blog.csdn.net/kevin_mqj/article/details/22981873項目——項目屬性——配置屬性——連接器——清單文件——嵌入清單改為就可以了。

    編譯通過后生成exe文件,在debug文件夾里(注意有2debug文件夾,exe文件在外層那個),然后把sqlite.dll放到這個目錄下面。運行后又出現“應用程序無法正常啟動0xc000007b的錯誤”,網上搜了一下,主要問題大概是于32位的程序調用了64位的dll或者反過來,由于我的dll64位的,那么說明應用程序是32位,可能需要對vs的環境進行設置。另外一種方法我直接重新下了一個32位的dll替換掉64位就可以了。

              clip_image012[4]

    三、       eclipse cdt gcc平臺

    使用eclipse之前首先要安裝jdk,這里jdk要和eclipse的版本對應,然后再安裝cdt插件,不同版本的cdt對應著不同的eclipse版本,可以在官網查看對應版本

    http://www.eclipse.org/cdt/downloads.php

    也可以直接下載帶cdteclipse,這樣就不用安裝插件了

    http://www.eclipse.org/downloads/packages/eclipse-ide-cc-developers/oxygen1a

    我使用的版本是eclipse 4.3 cdt8.3 jdk1.6,先安裝jdk,再安裝插件,然后要安裝gcc編譯器,一般網上講的都是mingw,但是這個似乎要在線安裝比較麻煩,所以我選擇TDM-GCC,軟件很小,一鍵安裝就可以,使用都和mingw差不多。

    然后把jdk的環境變量設一下就可以了,這個網上講的很多了,就不說了,TDM-GCC安裝后,它的環境變量會自動添加的。這里要注意的是如果想自己使用make命令的話,要把安裝目錄TDM-GCC-32\bin下的mingw32-make.exe的改為make.exe。如果用eclipse的話就不要管了。

    接下來新建項目,如圖所示

    clip_image014[4]

       然后添加main.c文件,代碼和上面的一樣,再把sqlite.dllsqlite.h放到工程下,這里eclipse不用添加文件,因為他的工程目錄和文件目錄是保持同步的,拷到工程目錄下就可以了。這里sqlite.dll要重新命名為libsqlite.dll(不改好像也可以),然后右鍵工程屬性—c++構建庫里面添加dll路徑,路徑添加時點+號里的工作空間,找到位置雙擊就可以了

    clip_image016[4]

    編譯后在debug文件夾下生成sqlite_test2.exe,這時要把sqlite.dll文件拷到這個文件夾下才能運行,點綠色三角形的運行按鈕后,運行成功。

    clip_image018[4]

    如果要debug,工程目錄不能為中文,點擊蟲子按鈕右邊三角形下拉的調試配置選項

    clip_image020[4]

    把原來的gdb改為

    clip_image022[4]

    這樣就可以單步調試了

    clip_image024[4]

     

     

    版權聲明:本文為pfysw原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/pfysw/article/details/78224306

    智能推薦

    Maven筆記1:環境搭建

    為什么80%的碼農都做不了架構師?>>>    一、簡介 Maven是基于項目對象模型(POM),可以通過一小段描述信息來管理項目的構建,報告和文檔的軟件項目管理工具。 為什么要用Maven呢? (1) JavaEE項目有很多依賴jar包,一個簡單的SSH項目依賴包可能有30多M, 而源代碼可能只有幾百K。體積龐大的依賴包造成代碼版本控制、分享代碼非常不方便。...

    SQLite學習筆記1 - 源碼編譯&基本操作

    一、環境配置 操作系統:Windows10 下載地址: windows環境下載zip版本: 二、編譯 根據官網說明來操作 cmd中輸入cl shell.c sqlite3.c -Fesqlite3.exe 創建一個aaa.db數據庫,創建表test 插入三條數據 插入三條數據 設置列的模式顯示 三、使用vs編寫數據庫操作 創建一個控制臺項目,sqlite3.c和sqlite3.h 作為源文件添加到...

    SQLite學習筆記(四)

    概述 本篇文章將繼續介紹關于 SELECT 中的一些用法。文章結構如下: 子查詢 多表連接/聯結表 名稱和別名 組合/復合查詢 條件結果 一、子查詢 子查詢是指 SELECT 語句中又嵌套 SELECT 語句。子查詢最常應用的地方是 WHERE 子句,特別是在 IN 操作符中。下面通過一個例子來了解下子查詢的用法和好處。 例子 列出訂購商品 RGAN01 的所有顧客。這個需求的檢索思路如下: 檢索...

    SwiftUI學習筆記[Sqlite]

    前言 移動端開發對于數據本地化的儲存可有文件儲存【即寫入到本地文件中NSUserDefaults的本質就是將數據按照key=value形式儲存在plist文件】,當然大量的數據字典儲存還是得用強大的sqlite。 一,SQLiteDB-集成 1.下載框架文件 SQLiteDB官網 中下載文件解壓拿到關鍵的.swift框架文件【CloudDB.swift,SQLTable.swift,SQLiteB...

    mbedtls學習(1)搭建環境

    獲得mbedtls源碼 clone下來時這樣 上面主要4個目錄 configs 是mbedtls參考的配置文件 include 是源碼頭文件,mbedtls的默認配置頭文件是config.h就在這里面 library 是源碼C文件,mbedtls的實現 programs 是一些示例,可以參考里面的例子看怎么用mbedtls 建立實驗工程編寫makefile 建立實驗工程目錄如下 mbedtls目錄...

    猜你喜歡

    Django學習(1):環境搭建

    目錄 原****鏈接 django入門與實踐杜秉軒 安裝python 下載 安裝 Django安裝 pip安裝 在命令行中執行以下命令 使用清華大學鏡像 編輯器 這里我使用了PyCharm 原****鏈接 django入門與實踐(杜秉軒) 安裝python 下載 關于python的版本,2和3都行,我用的是3.6.0 python官網下載地址 國內官網下載非常的慢,建議使用其他的下載方式 pyth...

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    freemarker + ItextRender 根據模板生成PDF文件

    1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...

    電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!

    Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...

    requests實現全自動PPT模板

    http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...

    精品国产乱码久久久久久蜜桃不卡