delphi sqlite3 delphi-xe2

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.