2011-02-07

DelphiからSQLiteを使う

SQLite3のページ

(Precompiled Binaries For Windows)  の zipをダウンロードしてsqlite3.dllを取り出して配布先アプリや開発環境のフォルダーへコピーする

simple Delphi wrapper for Sqlite 3 を入手


http://www.itwriting.com/repos/sqlitewrapper/trunk/sqlitesimpledelphi.zip
(この sqlitesimpledelphi.zip にも sqlite3.dll は入っています)




利用したいプロジェクト SQLite3.pas / SQLiteTable3.pas をコピーするか プロジェクトに追加して利用する





■サンプルから抜粋
var

 sldb: TSQLiteDatabase;
 sltb: TSQLIteTable;
 sSQL:String;

begin

 sldb := TSQLiteDatabase.Create(ExtractFilepath(application.exename) + 'test.db';);

 if sldb.TableExists('testTable') then // テーブルの存在チェック
 begin
  sldb.execsql('DROP TABLE testtable'); // 存在していたらドロップ
 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.BeginTransaction; //トランザクション開始
sSQL := 'INSERT INTO testtable(Name,OtherID,Number,Notes) VALUES ("Another Name",12,4758.3265,"More notes");';
sldb.execsql(sSQL); // SQL実行
sldb.Commit; //トランザクション終了 コミット
// query the data レコード操作 sltb := sldb.GetTable('SELECT * FROM testtable');
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;
sltb.Free;
sldb.Free; // DB解放
end;
■SQLite3のSQL
CREATE TABLE テーブル名 (
[項目1] INTEGER PRIMARY KEY,
[項目2] INTEGER NULL,
[項目3] VARCHAR (255),
[項目4] FLOAT, 
[項目5] BLOB, 
[項目6] BLOB COLLATE NOCASE
);
とサンプルにはあるが、
資料には TEXT , NUMERIC , INTEGER , REAL , NONE が型として利用できるとある
又、INTEGER は int と3文字表記できたり、文字が入ると文字列として格納する等と
基本は文字列扱いであるかのような書き方がされているサイトもある

0 件のコメント:

コメントを投稿