我是使用 Delphi 的数据库新手。实际上我需要使用firedac在gridview中显示所有表格及其数据。youtube 和 docwiki 上的几个视频教授了如何通过可视化组件访问数据库,即在表单上抛出 FDConnetion、FDTable、DataSource 等。
但我想以编程方式做同样的事情,以便我可以更多地专注于编码并将表单与业务逻辑分开。
这是我在访问 MSAccess 数据时在 C# 中所做的:
public void LoadUsersInfo()
{
try {
OleDbConnection Connection = new OleDbConnection();
Connection.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;DataSource=dbCyberNet.accdb;Persist Security Info=False;";
Connection.Open();
OleDbCommand command = new OleDbCommand();
command.Connection = Connection;
String query = "SELECT * FROM tblUsersInfo";
command.CommandText = query;
OleDbDataAdapter adapter = new OleDbDataAdapter(command);
DataTable dt = new DataTable();
adapter.Fill(dt);
dbGrid.DataSource = dt;
}
catch (Exception ex) {
MessageBox.Show("Error occured while loading users information . " + ex.Message.ToString());
}
finally { Connection.Close(); }
}
我想在 delphi 中为 sqlite 数据库做类似的事情。这是我尝试过的(已编辑)。
procedure TForm1.Button1Click(Sender: TObject);
var
con: TFDConnection;
table: TFDTable;
ds: TDataSource;
begin
con := TFDConnection.Create(nil);
con.LoginPrompt := False;
table := TFDTable.Create(nil);
table.TableName := 'Students';
ds := TDataSource.Create(nil);
ds.DataSet := table;
try
con.Open('DriverID=SQLite;Database=studentsDB.sqlite;');
table.Connection := con;
table.Active := True;
con.Connected := True;
DBGrid1.DataSource := ds;
finally
con.Close;
con.Free;
table.Free;
ds.Free;
end;
end;
每当我运行此代码时,都会出现错误对话框,显示:$ 759AF097 的第一次机会异常。带有消息“[FireDAC][Phys][SQLite] 错误:没有这样的表:STUDENTS”的异常类 ESQLiteNativeException。处理 Project1.exe (3836)
虽然表中存在相同的表名并使用可视化的 fireac 组件,但我可以看到数据网格很容易填充。