Zakładanie bazy na serwerze z aplikacji w delphi

Odpowiedz Nowy wątek
minio
2006-04-13 14:33
minio
0

Jak założyć baze danych (z tabelami i referencjami) na serwerze MSSQL 2000 z aplikacji napisanej w delphi? Program ma sprawdzać czy dana baza istnieje na serwerze a jak nie to ma ją utworzyć.
Proszę o pomoc

Pozostało 580 znaków

2006-04-13 17:46

Rejestracja: 16 lat temu

Ostatnio: 7 lat temu

0

normalnie - zalogować się na serwer, sprawdzić (to sobie sam znajdź bo nie wiem jak jest w mssql) i jak nie ma to zapytaniami SQL (typu CREATE DATABASE, CREATE TABLE itd) stworzyć strukturę/ Musisz tylko pamiętać, że musisz się zalogować na usera, który ma uprawnienia do tworzenia baz i tabel


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

minio
2006-04-13 20:23
minio
0

W jaki sposób zrobić to zapytaniami??
Za pomocą ADOQuery się nie da.
Proszę o jakiś przykład jak ktoś wie

Pozostało 580 znaków

jw_software
2006-04-14 09:38
jw_software
0

Witam !

Mozna, tylko jest to bardzo pracochłonne. Musisz wygenerować całą strukturę bazy danych a więc jesteś w posiadaniu skryptu będącego zbiorem poleceń SQL-a, który to wykona. Ponieważ ADO nie obsłuży (wykona) skryptu musisz wykonać wszystkie polecenia w nim zawarte "na piechotę", jeden po drugim pamiętając o kolejności.
Nie możesz np. zakładać indeksu czy referencji do tabeli, która jeszcze nie istnieje
itp... Jest to uciążliwe ale możliwe. Najlepiej próbować wyszukać jakiś komponencik do wykonywania skryptów współpracujący z interesującą Cię bazą i go zastosować.

Pozdrawiam

Pozostało 580 znaków

2006-04-14 10:00

Rejestracja: 16 lat temu

Ostatnio: 7 lat temu

0
jw_software napisał(a)

Mozna, tylko jest to bardzo pracochłonne. Musisz wygenerować całą strukturę bazy danych a więc jesteś w posiadaniu skryptu będącego zbiorem poleceń SQL-a, który to wykona.

A bez użycia delphi tylko z pod programu zarządzającego to się sama struktura wpisze :>
a pozatym, jeśli baza już istnieje to, większość normalnych programów do obsługi samego SZBD ma możliwość wyeksportowania całej struktury bazy do pliku txtowego

Ponieważ ADO nie obsłuży (wykona) skryptu musisz wykonać wszystkie polecenia w nim zawarte "na piechotę", jeden po drugim pamiętając o kolejności.

TADOCommand - a jak nie obsługuje kilku zapytań to wystarczy napisać automat, który będzie wczytywał z pliku txt polecenia od pierwszego znaku do ; a potem znowu od następnego do ; (tak są oznaczane końce pojedyńczego zapytania SQL) i je wykonywał

Nie możesz np. zakładać indeksu czy referencji do tabeli, która jeszcze nie istnieje

to chyba normalne i nigdzie się tak nie da

itp... Jest to uciążliwe ale możliwe. Najlepiej próbować wyszukać jakiś komponencik do wykonywania skryptów współpracujący z interesującą Cię bazą i go zastosować.

ale wtedy (idąc Twoim tokiem myślenia) skrypt też trzeba napisać ręcznie :>


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

jw_software
2006-04-14 11:13
jw_software
0

Nie wiem czy zauważyłeś ale problem jes w utworzeniu bazy danych Z POZIOMU APLIKACJI NAPISANEJ W DELPHI A NIE ŻADNEJ INNEJ ZEWNĘTRZNEJ. Oczywiście, że z poziomu jakiegoś programu do zarządzania bazą, bazami danych można wygenerować odpowiedni skrypt co jest bardzo porządane gdyż ustrzeżemy się wielu błędów, ale samo jego wykonanie z poziomu aplikacji użytkownika to już inna sprawa. Tutaj albo dołączymy do konkretnego projektu jakiś komponent do wykonywania skryptów albo tak jak pisałem niestety wykonujemy go "na piechotę" czyli tak jak to określiłeś programujemy automat, który zrobi to za nas. Oczywiście, że żaden szanujący się serwer baz danych nie pozwili na założenie np. ograniczeń na tabeli, która nie istniej ("nie odkryłeś Ameryki") ale wydaje mi się, iż wcześniejsze przemyślenie kolejności wykonywanych zapytań (jeśli skrypt tworzymy ręcznie) jest konieczne gdyż w takim wypadku wystarczy jedno wykonanie i baza gotowa. W przeciwnym przypadku mamy do czynienia z programowaniem metodą prób i błędów, która zabiera czas, niszczy nerwy i czyni naszą aplikację podatną na błędy. Tak programuje ktoś kto tego robić nie powinien.

Pozostało 580 znaków

minio
2006-04-14 12:15
minio
0

A w jaki sposób sprawdzić z poziomu aplikacji delphi czy dana baza intniej na serwerze MSSQL 2000? Może ktoś wie jak utworzyć taki automat który wczyta z pliku txt polecenia sql i je wykona na serwerze. Prosze o przykład kodu.

Pozostało 580 znaków

2006-04-14 12:47

Rejestracja: 16 lat temu

Ostatnio: 7 lat temu

0
jw_software napisał(a)

Nie wiem czy zauważyłeś ale problem jes w utworzeniu bazy danych Z POZIOMU APLIKACJI NAPISANEJ W DELPHI A NIE ŻADNEJ INNEJ ZEWNĘTRZNEJ. Oczywiście, że z poziomu jakiegoś programu do zarządzania bazą, bazami danych można wygenerować odpowiedni skrypt co jest bardzo porządane gdyż ustrzeżemy się wielu błędów, ale samo jego wykonanie z poziomu aplikacji użytkownika to już inna sprawa. Tutaj albo dołączymy do konkretnego projektu jakiś komponent do wykonywania skryptów albo tak jak pisałem niestety wykonujemy go "na piechotę" czyli tak jak to określiłeś programujemy automat, który zrobi to za nas. Oczywiście, że żaden szanujący się serwer baz danych nie pozwili na założenie np. ograniczeń na tabeli, która nie istniej ("nie odkryłeś Ameryki") ale wydaje mi się, iż wcześniejsze przemyślenie kolejności wykonywanych zapytań (jeśli skrypt tworzymy ręcznie) jest konieczne gdyż w takim wypadku wystarczy jedno wykonanie i baza gotowa.

umiesz czytać ze zrozumieniem? To, że ty masz z tym problem nie znaczy, że jest to jakieś skomplikowane!

TADOCommand - a jak nie obsługuje kilku zapytań to wystarczy napisać automat, który będzie wczytywał z pliku txt polecenia od pierwszego znaku do ; a potem znowu od następnego do ; (tak są oznaczane końce pojedyńczego zapytania SQL) i je wykonywał

widzisz tu gdzieś problem? Pod czym byś tego nie robił (Delphi, program do zarządzania konkretnym SZDB, coś jeszcze innego) to i tak i tak trzeba te CREATE TABLE i całą resztę napisać!
Wystarczy trochę pomyśleć i napisać kilka linijek WŁASNEGO kodu a nie do wszystkiego ściągać komponenty!
BTW nie wiem jak ty, ale ludzie, których znam (i nzajmują się BD) potrafią, mając przed sobą schemat BD, napisać od ręki skrypt tworzący daną bazę. No chyba, że masz zamiar pisać skrypt nie wiedząc jakie tabele, pola, indexy, ograniczenia itd ma mieć :>

W przeciwnym przypadku mamy do czynienia z programowaniem metodą prób i błędów, która zabiera czas, niszczy nerwy i czyni naszą aplikację podatną na błędy. Tak programuje ktoś kto tego robić nie powinien.

rozumiem, że jesteś tak genialny, że wszystkiego uczysz się od razu i nigdy żadne błędy ci nie wyskakują.

minio napisał(a)

A w jaki sposób sprawdzić z poziomu aplikacji delphi czy dana baza intniej na serwerze MSSQL 2000?

tu masz jeden sposób
drugi to zrobić CREATE DATABASE i jak wywali błąd to znaczy, że jest
trzecia to (nie wiem czy mssql ma coś takiego, ale powinien) sprawdzić w tabelach systemowych czy dana baza istnieje (gdzieś muszą być zapisane w końcu info o bazach, tabelach itd)

Może ktoś wie jak utworzyć taki automat który wczyta z pliku txt polecenia sql i je wykona na serwerze. Prosze o przykład kodu.

no toż to jest parę linijek kodu. Otwarcie pliku textowego, wczytanie lini do znaku; wykonanie polecenia, wczytanie następnego i tak aż do końca pliku.


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

jw_software
2006-04-14 13:06
jw_software
0

GRATULUJĘ GENIUSZU !!!

Pozostało 580 znaków

minio
2006-04-14 13:07
minio
0

Dzięki za poomoc Misiekd. Teraz już wiem jak sprawdzić czy baza istnieje na serwerze. Pozostaje mi tylko pomęczyć się z założeniem bazy na serwerze z poziomu aplikacj.

Pozostało 580 znaków

2006-04-14 15:55

Rejestracja: 17 lat temu

Ostatnio: 2 dni temu

0
minio napisał(a)

W jaki sposób zrobić to zapytaniami??
Za pomocą ADOQuery się nie da.

Co się nie da?
A z pół obrotu chcesz? ;)

A męczenia z założeniem bazy nie ma żadnego. Jedyne, co musisz zrobić, to skonstruować zapytanie SQL

var
  ado: TAdoQuery;
begin
  ado:=TAdoQuery.Create(Application);
  ado.Connection:=MainConnection; //MainConnection to oczywiście połączenie
  ado.SQL.Text:=myQuery; //zapytanie tworzące bazę
  try  
    Ado.ExecSQL;
  except
    on E: Exception do showMessage('Błąd: '+e.message);
  end;
  ado.Free;
end;

I masz pełną dynamikę począwszy od utworzenia ADO.

Pamiętaj, że ADOQuery jest tak skonstruowane, że jeśli pobierasz coś z bazy(SELECT) to wtedy używasz metody Open(ewentualnie Active:=true). We wszystkich innych wypadkach używasz ExecSQL.

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0