• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • sqlite3的簡單用法

    標簽: sqlite3

    sqlite3的簡單用法

    安裝sqlite3

    #在終端輸入sqlite3,查看是否安裝sqlite3,沒有的話先安裝sqlite3
    sudo apt-get install sqlite3
    sudo apt-get install libsqlite3-dev

    基本用法

    • 打開數據庫 sqlite3 test.db
    • 查看表 .tables
      可以使用圖形化工具navicat來創建的查看數據庫

    sqlite3 C/C++接口

    //打開數據庫
    sqlite3_open(const char *filename, sqlite3 **ppDb);
    //解析并執行由 sql 參數所給的每個命令,直到字符串結束或者遇到錯誤為止
    sqlite3_exec(sqlite3*, const char *sql, sqlite_callback, void *data, char **errmsg);
    //關閉數據庫
    sqlite3_close(sqlite3*);

    Example

    #include <stdio.h>
    #include <stdlib.h>
    #include <sqlite3.h>
    
    const char* data = "Callback function called";
    //插入數據回調函數
    static int insert_callback(void *NotUsed, int argc, char **argv, char **azColName){
       int i;
       for(i=0; i<argc; i++){
          printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
       }
       printf("\n");
       return 0;
    }
    //讀取數據回調函數
    static int callback(void *data, int argc, char **argv, char **azColName){
       int i;
       fprintf(stderr, "%s: ", (const char*)data);
       for(i=0; i<argc; i++){
            //將讀取到的數據轉化為浮點型
            t_val = atof(argv[2]);
            h_val = atof(argv[3]);
            l_val = atof(argv[4]);
            printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
       }
       printf("\n");
       return 0;
    }
    
    int main(void)
    {
        sqlite3 *db;
        char *zErrMsg = 0;
        int rc;
        //打開數據庫
        rc = sqlite3_open("test.db", &db);
        if(!rc){
            fprintf(stdout, "open database successfully\n");
        }
        char *sql_insert;
        //向數據庫插入一條數據
        sql_insert = "insert into sensor(sensor_id, temperature, humidity, illumination) values('syn05', 0.4, 2.9, 3000);";
        rc = sqlite3_exec(db, sql_insert, insert_callback, 0, &zErrMsg);
        if(rc != SQLITE_OK){
            fprintf(stderr, "SQL error: %s\n", zErrMsg);
            sqlite3_free(zErrMsg);
        }
        else{
            fprintf(stdout, "insert data successfully\n");
        }
        //從數據庫sensor表中選取id為syn05的最新數據
        char *sql;
        sql = "select * from sensor where sensor_id = 'syn05' order by id desc limit 0,1;";
        rc = sqlite3_exec(db, sql, callback, (void*)data, &zErrMsg);
        if(rc != SQLITE_OK){
            fprintf(stderr, "SQL error: %s\n", zErrMsg);
            sqlite3_free(zErrMsg);
        }
        else{
            fprintf(stdout, "operation done successfully\n");
        }
    }

    編譯

    需要在編譯選項上加入-lsqlite3
    如果使用的編輯器,比如codeblocks,按如下位置配置
    這里寫圖片描述

    出現fatal error: sqlite3.h: No such file or directory,安裝libsqlite3-dev
    sudo apt-get install libsqlite3-dev

    Navicat的使用

    下載Navicat:navicat112_mariadb_cs_x64.tar.gz
    點擊” ./start_navicat”安裝出現界面便面為亂碼
    解決辦法:打開start_navicat文件, export LANG=”en_US.UTF-8” 改為 export LANG=”zh_CN.UTF-8”。

    參考:
    1. http://www.runoob.com/sqlite/sqlite-c-cpp.html
    2. http://blog.csdn.net/xc889078/article/details/8793362
    3. https://www.cnblogs.com/qkhh/archive/2008/08/30/1280175.html
    4. http://blog.csdn.net/u010312436/article/details/51541231
    5. https://www.cnblogs.com/miaoer/p/6270473.html

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

    智能推薦

    QSetting的簡單用法

    輸出結果: 配置文件內容:...

    ListView的簡單用法

    本文為個人理解,如有錯誤請多指教。 **** 1. 使用ArrayAdapter適配器創建ListView 先寫一個適配器布局 定義一個實體類,用于適配ListView 編寫adapter適配器類,這個類繼承ArrayAdapter 然后在布局留下ListView的空間,并簡單的寫一個ListView布局,就像這樣 在活動中獲取ListView,并傳入數值。 結果如下...

    git的簡單用法

    title: git的運用 date: 2019-04-14 18:37:38 tags: 利用git命令向github提交內容 在github上面創建一個新的倉庫,用戶存儲本地倉庫的數據 安裝git window直接百度git linux: 創建一個目錄并且初始化為本地git倉庫 將需要提交的文件保存在該目錄上面 將文件添加到本地git倉庫 第一次聲明提交的遠程倉庫,第一次需要 commit p...

    SpannableString的簡單用法

     按照我的理解SpannableString     舉個例子:就是讓我們做出向一些登錄授權中,那幾行字上有的會有下劃線,或者點擊文字,跳轉網頁,還有我們使用的QQ中發消息的時候,文字加表情,實現圖文混排的效果等等。。。   下面可以參考:...

    OkHttp的簡單用法

    開源盛行的今天,許多出色的網絡通信庫都可以代替原生的HttpURLConnection,而今天我們就介紹下OkHttp的簡單用法。 OkHttp的項目主頁地址是:http://github.com/square/okhttp. 在使用OkHttp之前,我們需要添加OkHttp庫的依賴。 添加上述依賴會自動下載兩個庫,一個是OkHttp庫,一個是Okio庫,后者是前者的通信基礎。 接下來我們就步入正...

    猜你喜歡

    JSON的簡單用法

    JSON JSON簡介 JSON—Javascript Object Notation,前兩個單詞大家應該都認識,最后一個notation,是“記號、標記法”的意思,連在一起,便成了JSON。它是一種輕量級的數據交換格式,是基于Javascript的一個子集,可以叫做Javascript對象表示法,是存儲和交換文本信息的語法,但它并不是Javascript獨有的...

    StampedLock的簡單用法

            StampedLock是JDK1.8新引入的鎖機制,可以簡單的理解為讀寫鎖的改進版本。我們知道讀寫鎖可以讓讀和讀之間完全并發,但是讀和寫之間是有阻塞的。StampedLock使用了一種樂觀鎖的讀策略,這種機制類似于無鎖的概念,使得獲取鎖的過程中不會阻塞寫線程。 簡單例子         下面給...

    Markdown的簡單用法

    Markdown 是一種用來寫作的輕量級標記語言,它用簡潔的語法代替排版,而不像一般我們用的字處理軟件 Word 或 Pages 有大量的排版、字體設置。它使我們專心于碼字,用「標記」語法,來代替常見的排版格式。例如此文從內容到格式,甚至插圖,鍵盤就可以通通搞定了。目前來看,支持 Markdown 語法的編輯器有很多,包括很多網站(例如簡書)也支持了 Markdown 的文字錄入。Markdown...

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

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

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

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

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