sqlite3的使用

來源:互聯網
上載者:User

SQLite,是一款輕型的資料庫,是遵守ACID的關聯式資料庫管理系統,它的設計目標是嵌入式的,而且目前已經在很多嵌入式產品中使用了它,它佔用資源非常的低,在嵌入式裝置中,可能只需要幾百K的記憶體就夠了。它能夠支援Windows/Linux/Unix等等主流的作業系統,同時能夠跟很多程式語言相結合,比如
Tcl、C#、PHP、Java等,還有ODBC介面,同樣比起Mysql、PostgreSQL這兩款開源世界著名的資料庫管理系統來講,它的處理速度比他們都快。

#include <stdio.h>

#include <sqlite3.h>

#include <stdlib.h>

 

#define _DEBUG_

 

int main(void)

{

   sqlite3 *db=NULL;//聲明sqlite關鍵結構指標

   char *zErrMsg = 0;

   int rc;

   rc = sqlite3_open("/home/xue/db/Person",&db);   //終端到該目錄,shell建表

   if(rc!=SQLITE_OK){

       fprintf(stderr,"Can't open database:%s\n",sqlite3_errmsg(db));

       sqlite3_close(db);

       exit(1);

   }

   else printf(" successfully!\nCongratulation! Have fun!\n");

   int row=1,column=1;

   char **result;

   char *sql="select * from Per";

   sqlite3_get_table(db,sql,&result,&row,&column,&zErrMsg);

   int i=0;

   printf("row:%d column:%d\n",row,column);

   printf("\nThe result of querying is:\n");

   

   //輸出查詢的資料

   for(i=0;i<(row+1)*column;i++)

      printf("result[%d]=%s\n",i,result[i]);

 

   sqlite3_free_table(result);//釋放result的記憶體空間

 

   #ifdef _DEBUG_ //如果前面已經定義了_DEBUG_ ,則輸出所建立的表存在的資訊

      printf("zErrMsg=%s\n",zErrMsg);//保留錯誤資訊,如為空白(null),表明在執行過程中沒有錯誤資訊

   #endif

 

 

   sqlite3_close(db);              //關閉資料庫

   return 0;

}

//以上為已調試通過的代碼;

#include <stdio.h>

#include <sqlite3.h>

#include <stdlib.h>

 

#define _DEBUG_

 

int main(void)

{

   sqlite3 *db=NULL;//聲明sqlite關鍵結構指標

   char *zErrMsg = 0;

   int rc;

 

   //開啟或建立一個資料庫檔案

   rc = sqlite3_open("Person",&db);   //開啟指定的資料庫檔案,如果不存在,將建立一個同名的資料庫檔案,需要傳入db這個指標的指標,因為sqlite3_open函數要為這,個指標分配記憶體,好要讓db指標指向這個記憶體區

   if(rc!=SQLITE_OK){//或者直接是rc

       fprintf(stderr,"Can't open database: %s\n",sqlite3_errmsg(db));

       sqlite3_close(db);

       exit(1);//開啟失敗,退出

   }

   else printf("You have opened a sqlite3 database named query.dbsuccessfully!\nCongratulation! Have fun!\n");

   

   /*//建立一個表

   char *sql = "CREATE TABLE SensorData(ID INTEGER PRIMARYKEY,SensorID INTEGER,SiteNum INTEGER,name VARCHAR(12),SensorparamterREAL);";

   sqlite3_exec(db,sql,0,0,&zErrMsg);

   #ifdef _DEBUG_ //如果前面已經定義了_DEBUG_ ,則輸出所建立的表存在的資訊

      printf("%s\n",zErrMsg);

   #endif

 

   //插入資料

   sql="INSERT INTO\"SensorData\"VALUES(NULL,1,1,'200708081008',18.9);";//向要表中輸入內容

   sqlite3_exec(db,sql,0,0,&zErrMsg);

   sql="INSERTINTO\"SensorData\"VALUES(NULL,1,1,'200708081010',16.4);";

   sqlite3_exec(db,sql,0,0,&zErrMsg);*/

 

   int row=0,column=0;//用於記錄下面結果集中的行數和列數

    char **result;//二維數組用於存放結果

 

   //查詢資料

   char *sql="select * from Per";//查詢語句,其在C語言中對應的函數介面是sqlite3_get_table(db,sql,&result,&row,&column,&zErrMsg)

   sqlite3_get_table(db,sql,&result,&row,&column,&zErrMsg);//result:以數組的形式存放所要查詢的資料,首先是表名,然後才是資料

 

   int i=0;

   printf("row:%d column:%d\n",row,column);

   printf("\nThe result of querying is:\n");

   

   //輸出查詢的資料

   for(i=0;i<(row+1)*column;i++)

      printf("result[%d]=%s\n",i,result[i]);

 

   sqlite3_free_table(result);//釋放result的記憶體空間

 

   #ifdef _DEBUG_ //如果前面已經定義了_DEBUG_ ,則輸出所建立的表存在的資訊

      printf("zErrMsg=%s\n",zErrMsg);//保留錯誤資訊,如為空白(null),表明在執行過程中沒有錯誤資訊

   #endif

 

 

   sqlite3_close(db);              //關閉資料庫

   return 0;

}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.