ODBC MS SQL Datenbank erstellen
Re: ODBC MS SQL Datenbank erstellen
Ich habe hier mal den Quelltext des Testprojektes, so wie ich mir das dachte bzw so wie es noch nicht funktioniert.
Auf dem Formular sind dann eben nur ein Button, die Connection-, Transactionkomponenten und ein Query. Und wenn das OnClickereignis aktiviert wird, so kommt diese Fehlermeldung:
Auf dem Formular sind dann eben nur ein Button, die Connection-, Transactionkomponenten und ein Query. Und wenn das OnClickereignis aktiviert wird, so kommt diese Fehlermeldung:
Re: ODBC MS SQL Datenbank erstellen
Da hatte sich jetzt meine Antwort mit deiner Gegenantwort überschnitten. Gerade warst du noch bei ODBC jetzt wieder direkt.
Wenn die DMLs gehen, dann gibt es doch die DB bereits?
Und .. mach diich erst mal schlau über SQL-Datenbanken, Transaktionen und ODBC, sorry, aber was du jetzt machst ist basteln, und nicht programmieren.
Eine echte Datenbankanwendung kann man nicht zusammenklicken.
Ich weiß doch nicht ob du eine DB erstellen willst, und ich frage mich die ganze Zeit schon, warum überhaupt?VarStr hat geschrieben:Meinst du, dass ich über den befehl CreateDB eine Datenbank erstellen soll?
Wenn die DMLs gehen, dann gibt es doch die DB bereits?
Und .. mach diich erst mal schlau über SQL-Datenbanken, Transaktionen und ODBC, sorry, aber was du jetzt machst ist basteln, und nicht programmieren.
Eine echte Datenbankanwendung kann man nicht zusammenklicken.
Re: ODBC MS SQL Datenbank erstellen
Also erst einmal ja. Ich möchte eine Datenbank erstellen. Zum warum sei zu sagen, dass das so ne Art Abschlussarbeit ist. Für die Schule. Meine Aufgabe (hat mir mein lehrer rausgesucht) ist so ein kleines Datenbankmanagementtool zu basteln. Im Unterricht haben wir nur mit ODBC gearbeitet, wesshalb ich darauf zurückgegriffen habe. Bislang lief das auch ganz gut. Ich bin ja großteilig fertig (und alle dem Lehrer gezeigten Prototypen wurden von ihm abgesegnet). Nur diese eine Sache will halt nicht hinhauen. Meinen Lehrer konnte ich vor den Ferien (die fingen diese Woche an) nur kurz dazu befragen und er meinte, dass ich diese befehle über die master-datenbank ausführen kann.hde hat geschrieben: Ich weiß doch nicht ob du eine DB erstellen willst, und ich frage mich die ganze Zeit schon, warum überhaupt?
Wenn die DMLs gehen, dann gibt es doch die DB bereits?
Das reicht aber leider anscheinend nicht. Tja und ich werde den guten mann leider nicht vor dem ende der ferien wieder sehen und abgabe ist .... ja genau. nach den ferien.
die anderen befehle habe ich an bereits existierenden datenbanken ansprobiert. sie funktionieren. mein tool kann nur noch nicht selber eine datenbank erstellen. geht nicht.
Damit kommen wir auch zum Thema informiert. Ich war informiert. Bis zu diesem einen Punkt hat ja alles funktioniert. Ich war nur nicht informiert, dass es da mit dem CREATE bzw DROP Befehl Probleme geben würde. Dazu habe ich mich versucht zu informieren.
Das geht hier aber beispielsweise nicht, weil ihr wohl etwas zu viel wissen erwartet. Weiterhin versteht ihr anscheinend mein problem nicht bzw seid durch meine dürftigen schilderungsversuche eher verwirrt.
Und meine Versuche selber zu recherchieren sind auch gescheitert. Ja ein Ansatz wäre da, aber der funktioniert nicht, weil ich nicht einmal in der lage bin, so ne .dll-Datei ins Projekt einzubinden.
Re: ODBC MS SQL Datenbank erstellen
OK, dann versteh ich dich etwas mehr. Aber ich / wir in meiner Firma arbeiten alle nicht mit den SQL-Tools von Lazarus, da müssen dir hier andere im Forum helfen. Und da gibt es bestimmt einige, auch wenn Ostern nicht alle online sind.
Aber grundsätzlich, du musst zunächst den Datenbankserver konnekten. Bei ODBC konfigurierst du in der ODBC-Verwaltung die DSN, und damit auch wohin wirklich deine Reise geht. Wenn du da bereits in einer Datenbank landest, kannst du natürlich keine weitere dort anlegen.
Bei der MSSQLConnection versuch mal zu connecten (ohne DB) und erst dann die DB zu erstellen.
Aber grundsätzlich, du musst zunächst den Datenbankserver konnekten. Bei ODBC konfigurierst du in der ODBC-Verwaltung die DSN, und damit auch wohin wirklich deine Reise geht. Wenn du da bereits in einer Datenbank landest, kannst du natürlich keine weitere dort anlegen.
Bei der MSSQLConnection versuch mal zu connecten (ohne DB) und erst dann die DB zu erstellen.
Re: ODBC MS SQL Datenbank erstellen
NS.: auch ich geh jetzt off und bin erst nachts wieder on.
Viel Spaß hde
Viel Spaß hde
-
- Beiträge: 340
- Registriert: Di 12. Sep 2006, 08:57
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Kontaktdaten:
Re: ODBC MS SQL Datenbank erstellen
Ich weiß nicht, wo genau das Problem liegt. Ich habe es mit MySQL versucht, das sollte bei ODBC aber keinen Unterschied machen. Mein Projekt-Quelltext:
Und das funktioniert tadellos. Nur ein zweites Ausführen geht nicht, da die DB dann ja schon existiert. An der TSQLTransaction habe ich nichts geändert, also Default-Einstellung. Die ODBC-Datenquelle in WIndows habe ich ohne Standard-Datenbank angelegt, war auch kein Problem.
Edit1:
Habe das mal mit deinem Code getestet und bekomme den selben Fehler. Aber mit einer TSQLQuery kann ich CREATE DATABASE problemlos absetzen. Das Problem liegt hier in der Lazarus-Komponente TSQLConnection, von der TODBCConnection abgeleitet ist. In der Methode CreateDB wird einfach nur einen Fehler geworfen - warum auch immer. Diese Methode wird also vermutlich bei keiner Connection funktionieren.
Code: Alles auswählen
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, oracleconnection, sqldb, odbcconn, FileUtil, Forms,
Controls, Graphics, Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
ODBCConnection1: TODBCConnection;
SQLTransaction1: TSQLTransaction;
procedure Button1Click(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
ODBCConnection1.Open;
ODBCConnection1.ExecuteDirect('CREATE DATABASE robot_data');
ODBCConnection1.Close;
end;
end.
Edit1:
Habe das mal mit deinem Code getestet und bekomme den selben Fehler. Aber mit einer TSQLQuery kann ich CREATE DATABASE problemlos absetzen. Das Problem liegt hier in der Lazarus-Komponente TSQLConnection, von der TODBCConnection abgeleitet ist. In der Methode CreateDB wird einfach nur einen Fehler geworfen - warum auch immer. Diese Methode wird also vermutlich bei keiner Connection funktionieren.
Grüße, Antrepolit
care only if your os is really burning
care only if your os is really burning
-
- Beiträge: 298
- Registriert: Di 23. Nov 2010, 23:41
- OS, Lazarus, FPC: Ubuntu/Win, Lazarus trunk, FPC trunk
- CPU-Target: 32Bit/64Bit
- Wohnort: Geldern
- Kontaktdaten:
Re: ODBC MS SQL Datenbank erstellen
Kurz und schmerzlos, verunsichert den armen Jungen doch nicht so, ich habe gerade keinen MSSQL Server zur Hand, aber eigentlich sollte es so laufen. Ich finde wenn ihr auf andere Komponenten verweist solltet ihr auch dazu in der Lage sein einfach mal so ein paar Zeilen zusammen zu klatschen damit jemand versteht wozu die Komponente gut ist.
Wenn alles in der Programmierung ohne diese Komponente realisiert wurde finde ich es sinnlos sie einzubinden wenn lediglich 6 Zeilen Code erforderlich sind. Hier etwas mehr da ich nicht weiß mit welcher MSSQL Version gearbeitet wird.
Also so sollte es mit ADODB gehen:
So sollte es dann mit der TODBCConnection funktionieren
Wenn alles in der Programmierung ohne diese Komponente realisiert wurde finde ich es sinnlos sie einzubinden wenn lediglich 6 Zeilen Code erforderlich sind. Hier etwas mehr da ich nicht weiß mit welcher MSSQL Version gearbeitet wird.
Also so sollte es mit ADODB gehen:
Code: Alles auswählen
program OleDBMSSQL;
{$APPTYPE CONSOLE}
{$mode objfpc}{$H+}
uses ComObj, Variants;
{$Define mssqlexpress} //mssql oder mssqlexpress
var cn: OleVariant;
begin
// CoInitialize(NIL);
// create connection object
cn := CreateOleObject('ADODB.Connection');
// connect to master database, be sure for username and password
{$ifdef mssql} // MSSQL
cn.Open('Provider=SQLOLEDB.1;Initial Catalog=Master;Data Source=localhost;Persist Security Info=False;User ID=sa;Password=sa;');
{$endif}
{$ifdef mssqlexpress} // MSSQL Express 2008
cn.Open('Provider=SQLNCLI10.1;Initial Catalog=Master;Data Source=localhost\SQLEXPRESS;Persist Security Info=False;User ID=sa;Password=sa;');
{$endif}
// create the new database
cn.Execute('CREATE DATABASE MyTestDB');
//close connection;
cn.Close;
// destroy connection object
cn := unassigned;
// CoUnInitialize;
end.
Code: Alles auswählen
program ODBCMSSQL;
{$APPTYPE CONSOLE}
{$mode objfpc}{$H+}
uses sqldb, odbcconn;
var cn: TODBCConnection;
begin
// create connection object
cn := TODBCConnection.Create(nil);
cn.DatabaseName := 'master';
cn.Driver := ''; //<- und andere Parameter wie in Deinen anderen SQL-DB Connects
// connect to master database, be sure for username and password
cn.UserName := 'sa';
cn.Password := 'sa';
// create the new database
cn.ExecuteDirect('CREATE DATABASE MyTestDB');
//close connection;
cn.Close();
// destroy connection object
cn.Free;
end.
MfG Gocher
akt. Projekt: Webserver(HTTPS HTTP/2) mit integrierten CMS in Free Pascal - www.gocher.me
akt. Projekt: Webserver(HTTPS HTTP/2) mit integrierten CMS in Free Pascal - www.gocher.me
Re: ODBC MS SQL Datenbank erstellen
Ja das haben se ganz gut geschafft, aber das lag wohl an nem kleinen Verständnisproblem.gocher hat geschrieben:Kurz und schmerzlos, verunsichert den armen Jungen doch nicht so
hde hat geschrieben: Aber grundsätzlich, du musst zunächst den Datenbankserver konnekten. Bei ODBC konfigurierst du in der ODBC-Verwaltung die DSN, und damit auch wohin wirklich deine Reise geht. Wenn du da bereits in einer Datenbank landest, kannst du natürlich keine weitere dort anlegen.
Damit habt ihr mich auf die richtige Spur gebracht. Ich habe versucht ne ODBC-Datenquelle ohne Standard-Datenbank zu erstellen. Das wollte der nicht, aber dann habe ich den Treiber gewechselt. Ich habe bisher immer nur den einen genommen, den wir im Unterricht verwendet haben. Tja und jetzt läuftsAntrepolit hat geschrieben: Die ODBC-Datenquelle in WIndows habe ich ohne Standard-Datenbank angelegt, war auch kein Problem.
Edit1:
Habe das mal mit deinem Code getestet und bekomme den selben Fehler. Aber mit einer TSQLQuery kann ich CREATE DATABASE problemlos absetzen. Das Problem liegt hier in der Lazarus-Komponente TSQLConnection, von der TODBCConnection abgeleitet ist. In der Methode CreateDB wird einfach nur einen Fehler geworfen - warum auch immer. Diese Methode wird also vermutlich bei keiner Connection funktionieren.

Vielen lieben Dank an euch. Darauf wäre ich so ja mal garnicht drauf gekommen. Ich habe die Datenquelle ja schon vorher geändert, dass man als Standard-Datenbank auf die master-Datenbank zugreifft. Das war ja mein Ansatz. Das man das über die master-Datenbank macht. Deswegen hätte ich das garantiert nicht gefunden.