Autor Beitrag
Doerne
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Di 02.12.08 09:51 
Hi *,

Ich hätte hier noch eine Frage.

Besteht die Möglichkeit in einer Konsolenanwendung einen Zugriff
auf eine Interbasedatenbank zu reallisieren?

Wenn ja welche Klassen/Komponenten brauche ich dazu?

Gibt es ein Tutorial?

MFG
Doerne
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 02.12.08 10:29 
Prinzipiell ist das möglich, aber eine Menge Tipparbeit. Ich würde so vorgehen:
- Erstellung eines VCL-Testprogramms für den DB-Zugriff
- Notieren der verwendeten Units/Komponenten sowie der OI-Einstellungen für diesen Zugriff
- Einbinden dieser Units im Konsolenprogramm
- Dynamisches Erzeugen der Komponenten und Setzen der Properties wie notiert

Bei alledem musst Du natürlich sorgfältig arbeiten und kannst Dich nicht mehr auf Mechanismen der VCL verlassen. Insbesondere die Speicherverwaltung ist dann Deine Sache, da es ja keinen Owner geben kann, der die enthaltenen Objekte freigeben könnte.
delphiprogrammierer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 53



BeitragVerfasst: Di 02.12.08 11:34 
Hoi,

ich würde mir einfach ein DataModul erstellen und darin meine DB Komponenten, die ich benötige ablegen.

Gruss Delphiprogrammierer
Doerne Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Mi 03.12.08 10:32 
Hi *,

Ich bedanke mich erstmal für die Antworten.

Hier hab ich dann meine Lösung die auf einer lokalen Datenbank funktioniert.

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
uses DB_Module, DB, IBCustomDataSet, IBQuery, IBDatabase;

var MyDatabase: TIBDatabase;
var MyTransaction: TIBTransaction;
var MyQuery : TIBQuery;

function SQL_SelectREAD():String;
begin
    try
      MyDatabase := TIBDatabase.Create(nil);     
    except  
      result := 'MyDatabase.create...ERROR';
    end;

    try
      MyTransaction := TIBTransaction.Create(nil);
    except
      result := 'MyTransaction.create...ERROR';
    end;

// Zuweisen der Datenbank 
    try
      MyDatabase.DatabaseName := 'database\database.GDB';
    except
      result := 'MyDatabase.DatabaseName_Error';
      Exit;
    end;

    try
        try
          MyDatabase.AddTransaction(MyTransaction);
        except
          result := 'MyDatabase.DefaultTransaction_Error';
          Exit;
        end;

// Zuweisen der Datenbank
        try
          MyTransaction.AddDatabase(MyDatabase);
        except
           result := 'MyTransaction.DefaultDatabase_Error';
           Exit;
        end;

// Zuweisen der wichtigsten Parameter zur Transaktion
        try
          MyTransaction.Params.Add('read_committed');
        except
           result := 'MyTransaction.Params.Add(read_committed)_Error';
           Exit;
        end;

        try
          MyTransaction.Params.Add('rec_version');
        except
           result := 'MyTransaction.Params.Add(rec_version)_Error';
           Exit;
        end;

        try
          MyTransaction.Params.Add('nowait');
        except
           result := 'MyTransaction.Params.Add(nowait)_Error';
           Exit;
        end;

// Zuweisen der Logindaten (Versuch Melanie)
        try
          MyDatabase.Params.Values['USER_NAME']:='sysdba';
        except
          result := 'MyDatabase.Params.Adduser_Error';
          Exit;
        end;

        try
          MyDatabase.Params.Values['PASSWORD']:='masterkey';
        except
          result := 'MyDatabase.Params.Addpasswd_Error';
          Exit;
        end;

//restliche Anweisungen für die Datenbankverbindung
        try
          MyDatabase.LoginPrompt := false;
        except
          result := 'MyDatabase.LoginPrompt_Error';
          Exit;
        end;

// Verbindnen der Datenbank
        try
          MyDatabase.Connected := True;
        except
          result := 'MyDatabase.Connected_Error';
          Exit;
        end;

// Aktivieren der Transaktion
        try
          MyTransaction.Active := True;
        except
          result := 'MyDatabase.Connected_Error';
          Exit;
        end;

// Erstellen des MyQuery
        try
          MyQuery:= TIBQuery.Create(nil);
        except
          result := 'MyQuery.create_Error';
          Exit;
        end;

// MyQuerry wird die Datenbank zugewiesen
        try
          MyQuery.Database := MyDatabase;
        except
          result := 'MyQuerry.Database_Error';
          exit;
        end;

// MyQuerry wird die Transaktion zugewiesen
        try
          MyQuery.Transaction := MyTransaction;
        except
          result := 'MyQuerry.Transaction_Error';
          exit;
         end;

// Begin der Datenbankabfrage
          with MyQuery do
            begin
              try
                SQL.Clear;
                SQL.Add('SELECT * FROM personal');
              except
                result := 'MyQuery.Select__Error';
                exit;
              end;
              try
               open;
               if Not EOF then
               begin
                Close ;
                MyDatabase.Free;
                MyTransaction.Free;
                MyQuery.Free;
                result := 'Erfolg';
               end;
              except
               result := 'Query_Error';
               Exit;
              end;
          end;
    except
      result := 'ERROR';
    end;
end;


Zuletzt bearbeitet von Doerne am Mi 03.12.08 10:58, insgesamt 1-mal bearbeitet
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 03.12.08 10:56 
Hast Du nun beide Vorschläge vermischt? Liest sich zumindest so. Aber wenn es funktioniert, ist das ja schon mal was ;) Allerdings solltest Du die Echtdaten (Verbindungsparameter) im Posting ersetzen, das macht sich nicht so gut. Und das Freigeben der Objekte solltest Du in jedem Fall erledigen, nicht nur bei Erfolg (wenn ich das richtig überflogen habe).
Doerne Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Mi 03.12.08 11:00 
Mit dem freigeben des Speichers hast du Recht, das hab ich übersehen.
Danke für den Hinweis.