亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪(fǎng)問(wèn)板塊 發(fā)新帖
查看: 1343 | 回復(fù): 0
打印 上一主題 下一主題

在嵌入式Linux上實(shí)現(xiàn)SQLite數(shù)據(jù)庫(kù) [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2008-06-16 21:20 |只看該作者 |倒序?yàn)g覽

v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}

  Normal
  0
  
  7.8 磅
  0
  2
  
  false
  false
  false
  
   
   
   
   
   
   
   
   
   
   
   
   
  
  MicrosoftInternetExplorer4



st1\:*{behavior:url(#ieooui) }
/* Style Definitions */
table.MsoNormalTable
        {mso-style-name:普通表格;
        mso-tstyle-rowband-size:0;
        mso-tstyle-colband-size:0;
        mso-style-noshow:yes;
        mso-style-parent:"";
        mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
        mso-para-margin:0cm;
        mso-para-margin-bottom:.0001pt;
        mso-pagination:widow-orphan;
        font-size:10.0pt;
        font-family:"Times New Roman";
        mso-ansi-language:#0400;
        mso-fareast-language:#0400;
        mso-bidi-language:#0400;}
在嵌入式Linux上實(shí)現(xiàn)SQLite數(shù)據(jù)庫(kù)
Author:
mistry(qibing83@yahoo.com.cn)
1.1      
SQLite在PC機(jī)上的實(shí)現(xiàn)
1.1.1           
下載及安裝
到網(wǎng)站:http://www.sqlite.org/download.html 上下載最新的版本或到chinaunix.com上下載sqlite-3.3.5。
解壓后,configure的時(shí)候要指定安裝路徑和去掉tcl的支持,#./configure
–disable-tcl –prefix=/home/qibing/opt,然后#make #make install即可。安裝后在安裝目錄的lib下有l(wèi)ibsqlite3.a庫(kù)和在include下有sqlite3.h頭文件。
1.1.2           
編譯文件及驗(yàn)證
在目錄sqlite下編輯文件hello.c,
Hello.c
#include
#include

static
int callback(void *NotUsed, int argc, char **argv, char **azColName)
{
    int i;
   
    for (i = 0; i
        printf("%s = %s\n",
azColName, argv ? argv : "NULL");
    }
    printf("\n");
    return 0;
}

int
main(int argc, char **argv)
{
    sqlite3 *db;
    char *zErrMsg = 0;
    int rc;
   
    if (argc != 3) {
        fprintf(stderr, "Usage: %s
DATABASE SQL-STATEMENT\n", argv[0]);
        exit(1);
    }
    rc = sqlite3_open(argv[1], &db);
    if (rc) {
        fprintf(stderr, "Can't open
database: %s\n", Sqlite3_errmsg(db));
        sqlite3_close(db);
        exit(1);
    }
    rc = sqlite3_exec(db, argv[2], callback, 0,
&zErrMsg);
    if (rc != SQLite_OK) {
        fprintf(stderr, "SQL error:
%s\n", zErrMsg);
        sqlite3_free(zErrMsg);
    }
    sqlite3_close(db);
    return 0;
}
End of hello.c
運(yùn)行下面命令編譯,
gcc
-I/home/qibing/opt/include -L/home/qibing/opt/lib -o hello hello.c -lsqlite3
其中-I指定sqlite3頭文件的路徑,-L指定sqlite3的lib庫(kù)路徑,-lsqlite3表示鏈接到sqlite3庫(kù)。另外運(yùn)行時(shí)還需要把/home/qibing/opt/lib路徑加到LD_LIBRARY_PATH環(huán)境變量中,
#export
LD_LIBRARY_PATH=$LD_LIBRARY_PATH: /home/qibing/opt/lib
自此,運(yùn)行hello程序后跟SQL命令就可以操作數(shù)據(jù)庫(kù)了。
參考《在A(yíng)RM-Linux平臺(tái)上移植SQLite》

       
        文件:hello.rar
        大小:0KB
        下載:
下載
       


  
  
  
  
  
  
  
  
  
  
  
  







1.2      
SQLite3的移植工作
1.1.3           
修改Makefile.linux-gcc文件
在SQLite源代碼根目錄下有一個(gè)Makefile.linux-gcc文件是交叉編譯的參考Makefile原型?梢灾苯有薷腗akefile.linux-gcc這個(gè)文件,并在make的時(shí)候指定此文件。
l        
修改TOP,指定項(xiàng)目的根目錄
l        
修改編譯器、歸檔工具等為交叉編譯工具
l        
去掉與TCL相關(guān)的編譯選項(xiàng),sqlite默認(rèn)情況下會(huì)綁定tcl語(yǔ)言的,在這里我們不需要,可以在此處去掉
然后,#make –f  Makefie.linux-gcc 即可。
1.1.4           
SQLite的輸入和輸出
SQLite3是通過(guò)控制臺(tái)進(jìn)行用戶(hù)交互的。默認(rèn)情況下,SQLite的輸入為stkin,輸出為stkout,數(shù)據(jù)庫(kù)保存在memory即內(nèi)存中,SQLite是內(nèi)存型數(shù)據(jù)庫(kù)。
在實(shí)際應(yīng)用中,數(shù)據(jù)庫(kù)系統(tǒng)需要與MainControl進(jìn)程交互,即MainControl進(jìn)程將SQL語(yǔ)句輸入給SQLite,然后由SQLite將輸出結(jié)果發(fā)給MainControl進(jìn)程,并將中間的數(shù)據(jù)操作結(jié)果保存在Flash中。
l        
輸入,輸入源為MainControl進(jìn)程,通過(guò)進(jìn)程間通訊實(shí)現(xiàn),傳輸?shù)臄?shù)據(jù)大部分為SQL語(yǔ)句
l        
輸出,輸出源為MainControl進(jìn)程,這里的數(shù)據(jù)有時(shí)會(huì)很大,暫時(shí)不考慮進(jìn)程間通訊方式
1.1.5           
操作結(jié)果保存在Flash上
將SQLite的數(shù)據(jù)庫(kù)操作結(jié)果保存在flash上有兩種方法,
l        
將flash通過(guò)mount的方式掛載到Linux的文件系統(tǒng)上
l        
用Flash的驅(qū)動(dòng)接口改寫(xiě)Os_Linux.c下的UnixRead()函數(shù)的實(shí)現(xiàn)方式
這里我們用第一種方法實(shí)現(xiàn),只需把flash mount到文件系統(tǒng)上,并在mount的目錄下建立數(shù)據(jù)庫(kù)文件data.db即可。

1.3      
數(shù)據(jù)庫(kù)事務(wù)性能優(yōu)化
通過(guò)查看SQLite數(shù)據(jù)庫(kù)事務(wù)處理的實(shí)現(xiàn),事務(wù)處理模塊對(duì)一個(gè)事務(wù)的最終處理是分解為多個(gè)指令而完成的。那么對(duì)于頻繁操作的事務(wù)而言,數(shù)據(jù)庫(kù)實(shí)現(xiàn)很耗時(shí),可以通過(guò)改變執(zhí)行方式來(lái)優(yōu)化這些處理。在一個(gè)整體事務(wù)開(kāi)始前,通過(guò)sqlite_exec()調(diào)用”BEGIN”命令禁止啟動(dòng)事務(wù)并禁止“自動(dòng)提交”特性。整體事務(wù)完成后,通過(guò)sqlite_exec()調(diào)用”COMMIT”命令進(jìn)行事務(wù)提交并啟用“自動(dòng)提交”特性。
下面是實(shí)現(xiàn)方式的模型,
事務(wù)性能的優(yōu)化
cha
*pcBegin = "BEGIN";
sqlite3_exec(data.db,
pcBegin, 0, 0, 0);

int
i;
for(i
= 0; i {
       char acInsertStr[64] = {0};
       snprintf(acInsertStr, 63,
"%s%s", "INSERT INFO workers VALUES(", ,
'qixiangbing');");
       sqlite3_exec(data.db, acInsertStr, 0,
(void *)&pcErrorMsg);
}

char
*pcCommit = "COMMIT";
sqlite3_exec(data.db,
pcCommit, 0, 0, 0);
End of 事務(wù)性能的優(yōu)化




本文來(lái)自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u2/70351/showart_1003351.html
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專(zhuān)區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP