Аз съм нов в базата данни, използвайки Delphi. Всъщност трябва да покажа всички таблици и техните данни в мрежов изглед с помощта на firedac. Няколко видеоклипа в youtube и docwiki учат как да получите достъп до база данни чрез визуални компоненти, т.е. хвърляне на FDConnetion, FDTable, DataSource и т.н. във формуляра.
Но бих искал да направя същото програмно, за да мога да се съсредоточа повече върху кодирането и да отделя формата от бизнес логиката.
Ето какво направих в C#, докато имах достъп до данните на MSaccess:
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. Клас изключение ESQLiteNativeException със съобщение „[FireDAC][Phys][SQLite] ГРЕШКА: няма такава таблица: STUDENTS“. Процес на Project1.exe (3836)
като има предвид, че същото име на таблица съществува вътре в таблицата и използвайки компоненти на визуален firedac, мога да видя, че мрежата с данни се запълва лесно.