컴퓨터 (컴퓨터 이름, CPU, 메모리 등)에서 정보를 수집하는 응용 프로그램을 만들었지 만 SQLite 데이터베이스에 저장된 정보를 표시하는 데 어려움을 겪고 있습니다. 나는 내가 "하드웨어"라는 테이블을 가지고 있다는 것을 확실히 알았을 때 "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 데이터베이스입니다 :
를임의의 헬 당신이 제공 할 수있는 P는 크게 감사하겠습니다. 고맙습니다.
'SQLConnection1' 및 해당 데이터베이스에 대한 구성 방법. 거기에 지정된 데이터베이스 파일에 대한 올바른 경로가 있습니까? – TLama
SQLConnection1은 TSQL Connection 개체이며 예를 들어 절대 경로를 지정 했으므로 데이터베이스에 연결하는 것이 문제가되지 않습니다. – Cor4Ever
"select * from sqlite_master"쿼리를 수행하고 실제로 데이터베이스에있는 테이블을 확인하십시오. –