Delphi7中不用控件鏈接sqlite

DELPHI 7 沒有辦法使用lib文件,這就有點麻煩,可是我們也沒有必要一個一個Query,那樣太痛苦了。我當時就好痛苦。我們能夠藉助第三方的包裝類,有一些是收費的,可是也有一些免費的,具體的信息你們請查看下面的地址 http://www.sqlite.org/cvstrac/wiki?p=SqliteWrappersphp

我這裏使用的是sqlite simple delphi 這是一個徹底免費的包裝類,你們能夠到它的官方網站下載,http://www.itwriting.com/sqlitesimple.phpsql

下來之後是一個壓縮包裏面是一個demo。我們須要裏面的兩個文件。SQLite3.pas 跟 SQLiteTable3.pas ,把他們複製到工程目錄下面,而後在須要操做庫的單元文件裏面 uses SQLiteTable3 ,而後你們請查看官方的事例代碼數據庫


procedure TForm1.btnTestClick(Sender: TObject);app

var函數

slDBpath: string;
sldb: TSQLiteDatabase;
sltb: TSQLIteTable;
sSQL: String;
Notes: String;
begin
slDBPath := ExtractFilepath(application.exename)+'test.db';
sldb := TSQLiteDatabase.Create(slDBPath);
try
if sldb.TableExists('testTable') then 
begin
sSQL := 'DROP TABLE testtable';
sldb.execsql(sSQL);
end;
sSQL := 'CREATE TABLE testtable ([ID] INTEGER PRIMARY KEY,[OtherID] INTEGER NULL,';
sSQL := sSQL + '[Name] VARCHAR (255),[Number] FLOAT, [notes] BLOB, [picture] BLOB COLLATE NOCASE);';
sldb.execsql(sSQL);
sldb.execsql('CREATE INDEX TestTableName ON [testtable]([Name]);');網站

//begin a transactionspa

sldb.BeginTransaction;.net

sSQL := 'INSERT INTO testtable(Name,OtherID,Number,Notes) VALUES ("Some Name",4,587.6594,"Here are some notes");';unix

//do the insertcode

sldb.ExecSQL(sSQL);

sSQL := 'INSERT INTO testtable(Name,OtherID,Number,Notes) VALUES ("Another Name",12,4758.3265,"More notes");';

//do the insert

sldb.ExecSQL(sSQL);


//end the transaction

sldb.Commit;


//query the data

sltb := slDb.GetTable('SELECT * FROM testtable');

try


if sltb.Count > 0 then

begin

//display first row


ebName.Text := sltb.FieldAsString(sltb.FieldIndex['Name']);

ebID.Text := inttostr(sltb.FieldAsInteger(sltb.FieldIndex['ID']));

ebNumber.Text := floattostr( sltb.FieldAsDouble(sltb.FieldIndex['Number']));

Notes := sltb.FieldAsBlobText(sltb.FieldIndex['Notes']);

memNotes.Text := notes;


end;


finally

sltb.Free;

end;


finally

sldb.Free;


end;


end;


這樣操做起來是否是很簡單,^_^


<4> PHP調用SQLite3 ,這個不用我多廢話,請參看我寫的《經過Apache + PHP5 + PDO 鏈接 SQLite3 數據庫》一文。


<5>Visual Basic , 由於我沒有仔細研究,我無發言權,請參看SQLite官方的資料


http://www.sqlite.org/cvstrac/wiki?p=SqliteWrappers


COM Wrappers / Visual Basic DLLs部分

 
<6>JAVA 請參看http://www.loveunix.net/bbs/index.php?showtopic=35051 帖子,講述的比較詳細。

 第二部分 使用事務寫庫

 事務的具體理論概念我不想多說了,若是不明白的請你們到GOOGLE搜索關鍵字「數據庫事務」,能找到N多文章資料。咱們使用VC++來作事例。還有使用到上面的兩個函數

 void WriteSqlite()

{

try

{

OpenSqlite();

execSQL("begin transaction;"); \\開始一個事務,記錄操做

char strSQL[MAX_PATH];

sprintf(strSQL,"INSERT INTO Table_Name (nAction1, nAction2, nAction3) VALUES(%d,%d,%d)", szVar1,szVar2, szVar3,);

execSQL(strSQL);

execSQL("commit transaction;"); \\執行提交以前數據庫自動保存用戶對數據庫操做序列。

return;

}

catch(...)

{

execSQL("rollback transaction;");

}

//Add custom code


}

 
本文至此而完,上述代碼均在 Windows2000 Pro + VC++6 英文企業版本 + Delphi7 英文企業版 編譯經過

相關文章
相關標籤/搜索