Witajcie ponownie,
Założenie: Aplikacja przy pierwszym uruchomieniu i podłączeniu się do bazy danych, musi założyć w tej bazie kilka tabel, oraz niektóre z nich wypełnić kilkuset rekordami.
Skrypt zakładający tabele nie jest mały. Pierwsza myśl, to zapisać wygenerować i zapisać skrypt w SQL Management Studio. Usunąć z niego wszystkie słowa kluczowe GO. Następnie wczytać go do TStringList. Linijka po linijce wstawiać do TADOCOmmand i to wywoływać. Ale to będzie jakiś czas trwało.
A czy Wy macie jakieś inne pomysły?
Używam komponentów dbGo.
- Rejestracja:ponad 22 lata
- Ostatnio:około 19 godzin
- Postów:297

- Rejestracja:ponad 18 lat
- Ostatnio:6 dni
- Lokalizacja:Zielona Góra
nie używam dbgo tylko firedac i tam nic nie muszę usuwać z pliku skryptu. Po prostu tworzę go w SSMS i wczytuję TFDScript.
Ale zrobiłbym właśnie tak jak napisałeś.
Aż skusiło mnie i zapytałem sztucznej inteligencji jak to by zrobiła. Oto efekt (po wczytaniu do Delphi) i działa:
procedure ExecuteSQLScript(const SQLScript: string);
var
ADOConnection: TADOConnection;
ADOQuery: TADOQuery;
begin
// Create and configure the ADOConnection
ADOConnection := TADOConnection.Create(nil);
try
ADOConnection.ConnectionString := 'string do połączenia';
ADOConnection.LoginPrompt := False;
ADOConnection.Connected := True;
// Create and configure the ADOQuery
ADOQuery := TADOQuery.Create(nil);
try
ADOQuery.Connection := ADOConnection;
ADOQuery.SQL.Text := SQLScript;
ADOQuery.ExecSQL;
finally
ADOQuery.Free;
end;
finally
ADOConnection.Free;
end;
end;
function LoadFileToString(const FileName: string): string;
var
StringList: TStringList;
begin
StringList := TStringList.Create;
try
StringList.LoadFromFile(FileName);
Result := StringList.Text;
finally
StringList.Free;
end;
end;
procedure TForm1.btn1Click(Sender: TObject);
var
FileContent: string;
begin
begin
try
FileContent := LoadFileToString(ExtractFilePath(Application.ExeName) + 'skrypt.sql');
except
on E: Exception do
Writeln('Error: ', E.Message);
end;
end;
ExecuteSQLScript(FileContent);
end;
- Rejestracja:prawie 10 lat
- Ostatnio:około 21 godzin
- Postów:1083
woolfik napisał(a):
Nie zapomnij dodać kodu sprawdzającego czy przypadkiem obiekty/dane już nie istnieją
A może jeszcze zapisać sobie po prostu wersję bazy danych w .. samej bazie danych? :D
Aktualizacji może być wiele. W przyszłości zapewne będą dochodzić kolejne. I Dobrze jest mieć listę update'ów z wersji na wersję i jak widzimy, że mamy wersję bazy 120, a aktualnie program oczekuje 128 to wykonujemy skrypty o numerach 121-128. Oczywiście coś takiego robimy przy każdym starcie aplikacji. Wtedy automatem wszystko się ładnie zaktualizuje.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.