我創建了一個從計算機(計算機名稱,CPU,內存等)收集信息的應用程序,但我很難顯示存儲在SQLite數據庫中的信息,何時我執行一個查詢,當我知道我有一張名爲「hardware」的表時,我得到了「NO SUCH TABLE」消息,我做錯了什麼?SQLite異常引發的消息:沒有這樣的表
在這裏,我用它來執行查詢的代碼:
procedure TMain.executeButtonClick(Sender: TObject);
var
results: TDataSet;
query: String;
begin
outputMemo.ClearSelection;
query := 'SELECT * FROM hardware;';
try
SQLConnection1.Execute(query, nil, results);
except
on E: Exception do
outputMemo.Text := 'Exception raised with message: ' + E.Message;
end;
ShowSelectResults(results);
end;
數據庫文件和表中創建程序創建的每個應用程序運行時
procedure CheckForDatabase;
var
sldb: TSQLiteDatabase;
sSQL: string;
begin
slDBPath := ExtractFilePath(paramstr(0)) + 'ComputerName.db';
// ShowMessage(slDBPath);
sldb := TSQLiteDatabase.Create(slDBPath);
try
if sldb.TableExists('hardware') then
begin
sSQL := 'DROP TABLE hardware';
sldb.ExecSQL(sSQL);
end;
sSQL := 'CREATE TABLE hardware (id INTEGER PRIMARY KEY, compname TEXT, username TEXT, model TEXT, manufacturer TEXT, domain TEXT, ip TEXT, serialnumber TEXT)';
sldb.ExecSQL(sSQL);
sldb.ExecSQL('CREATE INDEX sHardware ON hardware(CompName);');
sldb.BeginTransaction;
sSQL := 'INSERT INTO hardware(id, compname, username, model, manufacturer, domain, ip, serialnumber) VALUES (1, "AMD8537", "OMonge", "Gigabyte", "Gigabyte", "Workgroup", "192.168.1.11", "8746652");';
sldb.ExecSQL(sSQL);
sldb.Commit;
finally
sldb.Free;
end;
end;
這是SQLite數據庫:
任何hel p你可以提供給我,將不勝感激。謝謝。
什麼是'SQLConnection1'以及如何配置針對數據庫。你有指定的數據庫文件的正確路徑嗎? – TLama
SQLConnection1是一個TSQL連接對象,是的,我確實有指定的絕對路徑,連接到數據庫不是問題。 – Cor4Ever
執行「select * from sqlite_master」查詢並查看哪些表真的存在於您的數據庫中。 –