delphi - Excepción SQLite planteada con mensaje: no hay tabla
sqlite3 delphi-xe2 (1)
Usted Taged Delphi-XE2 entonces mi respuesta pertenece a XE2
Desde la versión RAD Studio XE3 TSQLMonitor es compatible con bases de datos SQLite. ...
Con XE2 No puede usar SQLConnection1: TSQLConnection;
con Driver Sqlite
!
No funcionará SQLConnection1.Execute(query, nil, results);
De acuerdo con el código utilizado, parece ser el simple Delphi wrapper for Sqlite 3
actúe.
Entonces puedes usar el sldb
recién creado.
slDBPath := ExtractFilePath(paramstr(0)) + ''ComputerName.db'';
sldb := TSQLiteDatabase.Create(slDBPath);
En el procedure CheckForDatabase;
retirar
var
sldb: TSQLiteDatabase;
y ponerlo en la interfaz de su aplicación
private
{ Private declarations }
sltb: TSQLIteTable;
sldb: TSQLiteDatabase;
también elimine sldb.Free;
formar el bloque finalmente
finally
sldb.Free;
end;
En su executeButtonClick(...
procedure TMain.executeButtonClick(Sender: TObject);
var
query: String;
begin
outputMemo.ClearSelection;
query := ''SELECT * FROM hardware;'';
sltb := sldb.GetTable(query);
if sltb.Count > 0 then begin
//display first row
....
if not sltb.IsLastRow the begin
sltb.Next;
//display next row
....
cómo mostrar los valores de campo: mira aquí
Creé una aplicación que recopila información de la computadora (nombre de la computadora, CPU, memoria, etc.) pero estoy teniendo un momento tan difícil para mostrar la información almacenada en la base de datos SQLite, cuando ejecuto una consulta me aparece "NO TAL CUADRO" mensaje cuando sé con certeza que tengo una tabla llamada "hardware", ¿qué estoy haciendo mal?
Aquí el código que uso para ejecutar la consulta:
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;
El archivo de base de datos y la tabla se crean mediante programación cada vez que se ejecuta la aplicación
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;
Y esta es la base de datos SQLite:
Cualquier ayuda que me pueda brindar será muy apreciada. Gracias.