Database



  • wie verbinde ich eine Datenbank mit meinem Programm.

    P



  • hi,

    ohne es vollständig probiert zu haben und ohne zu wissen ob es die beste und einfachste Möglichkeit ist würde ich mal auf ADO tippen.
    Also einen Verweis z.B. "Microsoft ActiveX Data Objects 2.7" im COM-Register zu deinem Projekt hinzufügen.
    Dann damit wie gehabt auf Datenbanken zugreifen.

    grüße
    ms



  • Die einfachste Möglichkeit es mit Visual Studio .Net zu machen ist es, im Windows Form Designer unter Tools->Daten die OleDBDataAdapter auf die Form zu ziehen. Dort kannst du dann unter Eigenschaften alles einstellen was du brauchst 😉

    cu



  • @Szcypior

    Wenn ich im Windows Form Designer bin, und auf Tools gehe, habe ich keinen Punkt der Daten heißt. Seltsam? Warum?



  • Wenn du auf die ToolBox gehst (da wo auch deine ganzen Steuerelemente liegen), gibts da die Untergruppen Data, Components, Windows Forms, Clipboard Ring und General. Unter Data findest du dann die gewünschten Komponenten.



  • Oder in der Deutschen Version Daten. Falls der nicht da sein sollte, was aber eigentlich standard sein sollte, kannst mit Rechtsklick auf die Toolbox->Toolbox anpassen ein Häckchen bei System.Data machen und schon dürften die Komponenten dort erscheinen.

    cu



  • Hi!

    Ich habe hier mal ein kleines Beispiel für eine ADO.NET Verbindung zu einem SQL 2000 Server gemacht.

    private void button1_Click(object sender, System.EventArgs e)
    {
     System.Data.SqlClient.SqlConnection  con = new System.Data.SqlClient.SqlConnection("User ID=sa;Password=blank;Initial Catalog=Testdb;Data Source=MeinComputer");
     System.Data.SqlClient.SqlCommand    com = new System.Data.SqlClient.SqlCommand();
     System.Data.SqlClient.SqlDataAdapter dta = new System.Data.SqlClient.SqlDataAdapter();
     System.Data.DataSet ds  = new System.Data.DataSet();
    
     com.CommandText="SELECT * FROM tblBeispielTabelle";
     com.Connection=con;
     dta.SelectCommand = com;
     dta.Fill(ds,"Test");
    
     this.dataGrid1.DataSource = ds.Tables["Test"];
    }
    

    Vorausgesetzt Du hast ein DataGrid namend "dataGrid1" auf Deinem Formular (wenn es um WindowsForms geht) würde es mit den Inhalten der Tabelle "tblBeispielTabelle" versorgt werden.

    Grüße,
    Envi



  • Hab die Codezeilen reinkopiert und dementsprechend verändert.

    System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection("User ID=sa;Password=blank;Initial Catalog=<Datenbankname>;Data Source=<Computername>");
    System.Data.SqlClient.SqlCommand com = new System.Data.SqlClient.SqlCommand();
    System.Data.SqlClient.SqlDataAdapter dta = new System.Data.SqlClient.SqlDataAdapter();
    System.Data.DataSet ds = new System.Data.DataSet();

    com.CommandText="SELECT * FROM <tabellenname>";
    com.Connection=con;
    dta.SelectCommand = com;
    dta.Fill(ds,"Test");

    this.dataGrid1.DataSource = ds.Tables["Test"];

    An der Stelle dta.Fill... bricht er immer mit der Fehlermeldung:

    "An unhandled exception of type 'System.Data.SqlClient.SqlException' occurred in system.windows.forms.dll

    Additional information: System error."

    ab.

    Als ich selber mal am probieren war und mit dem Befehl con.open() gearbeitet hatte, brach er an dieses Stelle ab. Wobei der Abbruch ja wegem dem gleichem Problem kommt, nämlich dem Zugriff auf die Datenbank...mhhh... was mache ich den Falsch? Meiner Meinung nach muss es an dieser Stelle liegen:

    System.Data.SqlClient.SqlConnection("User ID=sa;Password=blank;Initial Catalog=<Datenbankname>;Data Source=<Computername>");

    Aber was ist das Problem und viel wichtiger, wie ist die Lösung



  • Ich würde mal im Server Explorer unter Visual Studio .Net eine neue Verbindung herstellen. Dort dann zu deiner Datenbank verbinden. Dann kannst du unter Eigenschaften dieser Verbindung, falls diese Erfolgreich war dir den Connection String anzeigen lassen, den fügst du dann in dein Prog ein.

    cu



  • Hi,

    also "blank" bei 'Password' war in dem Fall auch das Passwort, wenn Du keins vergeben hast lass den Punkt weg.

    Da der Fehler ja anscheinend bei dem Fill auftaucht müsste die Verbindung aber ok sein...

    Bauch doch mal eine Fehlerbehandlung ein:

    private void button1_Click(object sender, System.EventArgs e)
    {
     try
     {
     System.Data.SqlClient.SqlConnection  con = new System.Data.SqlClient.SqlConnection("User ID=sa;Password=blank;Initial Catalog=Sachmittel;Data Source=P89743258789UFD");
     System.Data.SqlClient.SqlCommand    com = new System.Data.SqlClient.SqlCommand();
     System.Data.SqlClient.SqlDataAdapter dta = new System.Data.SqlClient.SqlDataAdapter();
     System.Data.DataSet                     ds  = new System.Data.DataSet();
    
     com.CommandText="SELECT * FROM tblAdressen";
     com.Connection=con;
     dta.SelectCommand = com;
     dta.Fill(ds,"Test");
    
     this.dataGrid1.DataSource = ds.Tables["Test"];
     }
    catch(Exception ex)
     {
     MessageBox.Show(ex.Message);
     }
    }
    

    Was kommt da zurück?

    Schöne Grüße,
    Envi



  • Fehler bei der Anmeldung für den Benutzert 'sa'. Ursache: Keiner vertrauten SQL Server-Verbindung zugeordnet.



  • Aha!

    Das is jetzt aber seltsam, hatte eigentlich nie Probleme mit einer Verbindung auf einen SQL Server...

    Kanns Du Dich denn per Enterprise Manager auf den SQL Server verbinden, mit User "sa" und dem nötigen Passwort?

    Schöne Grüße,
    Envi


Anmelden zum Antworten