# Datenbank in C# einbinden



## JeyB (21. Februar 2008)

Hallo alle zusammen,

ich schreibe gerade ein C# Programm, welches u.a. eine Datenbank auselsen soll. Dazu muss ich ja die Datenbank in mein Projekt einbinden. Es handelt sich hierbei um eine ODBC Datenbank der Treiber dazu ist der Adaptive Server Anywhere 9.0.
Ich bekomme auch eine erfolgreiche Verbindung zu der Datenbank, wenn ich dies über Verwaltung-->Datenquellen(ODBC)-->System-DSN mache.
Mein bisheriger Quellcode sieht momentan so aus.

```
using System;
using System.Data;
using System.Data.Odbc;

OdbcConnection mcworkflow = new OdbcConnection(@"UID=xxx;PWD=xxx; DBF=C:\Test\Datenbank.db");
                
                string driver = mcworkflow.Driver.ToString();

                MessageBox.Show(driver);
                mcworkflow.Open();
                
                mcworkflow.Close();
```

Wieso zeigt mir die MessagBox einen leeren Inhalt an? Und Wieso erscheint dann beim ausführen, nachdem ich die Datenbank öffnen will --> mcworkflow.open(), die Fehlermeldung:
ERROR[IM002] [Microsoft][ODBC Driver Manager] Der Datenquellenname wurde nicht gefunden und es wurde kein Standardtreiber angegeben.

Wie kann ich den Standardtreiber angeben? Mir geht es hierbei nur darum, eine Verbindung mit der Datenbank erfolgreich herzustellen. Der Pfad zur Datenbank stimmt aber überein. Der Treiber für Adaptive Server Anywhere 9.0 ist DBODBC9.DLL, diesen habe ich auch schon gefunden. Wie binde ich diesen ein, um somit eine erfolgreiche Verbindung mit der Datenbank herzustellen? Bitte um Hilfe.

Gruß JeyB


----------



## JeyB (10. März 2008)

Hallo alle zusammen,

Konnte nun eine erfolgreiche Verbindung mit der Datenbank herstellen und kann diese auch auslesen. Derzeitiges Problem ist nur, dass ich den ausgelesenen Inhalt in einem Datagridview einlesen möchte. Wie lautet hierfür der Befehl?
Mein Quellcode sieht zur zeit so aus:

```
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Diagnostics;
using Microsoft.Win32;
using System.Reflection;
using System.Data.Odbc;

namespace AutomaticTester
{

        public partial class Form2 : Form
        {

            string lpath = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles);

     
            private void buttonDbLoad_Click(object sender, EventArgs e)
            {

                string connectionString = "Database=XXX;DSN=XXX;UID=xx;xPassword=xxx;";
                OdbcConnection mcworkflow = new OdbcConnection(connectionString);
                //SQL Command
                string command = "select PatientsName from dba.CommonPatient";
                OdbcCommand mcworkflowCommand = new OdbcCommand(command, mcworkflow);
                

                //Datenbank öffnen
                try
                {
                    
                    mcworkflow.Open();
                    MessageBox.Show("Die XXX Datenbank wurde erfolgreich geladen!");
                }
                    catch
                {


                    string error = "Fehler bei Verbindungsaufbau. Überprüfen Sie die Zugangsdaten!";
                    MessageBox.Show(error);
                    
                    mcworkflow.Close();

                }

                //Datenbank auslesen

                OdbcDataReader mcworkflowDataReader = mcworkflowCommand.ExecuteReader();

                try
                {

                    using (StreamWriter sw1 = new StreamWriter(lpath + @"\Autoimport\DBData.txt"))
                    {

                        while (mcworkflowDataReader.Read())
                        {


                            sw1.WriteLine("PatientsName= {0}", mcworkflowDataReader[0]);


                        }
                    }



                    StreamReader sr1 = new StreamReader(lpath + @"\Autoimport\DBData.txt");
                    String line;
                    while ((line = sr1.ReadLine()) != null)
                    {
                        //hatte es bisher in einer listbox ausgegeben hat auch funktioniert
                        listBox1.Items.Add(line);
                        //jetzt müsste es aber hier in einer datagridview eingelesen werden

                    }


                }
                catch
                {
                    string errormessage2 = "Der Data Reader konnte die Spalte nicht lesen!";
                    MessageBox.Show(errormessage2);
                    mcworkflowDataReader.Close();
                    mcworkflow.Close();
                }

            }

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
            {

            }
          
        }
    }
```

Hoffe mir kann jemand helfen. Habe auch schon gegoogelt aber bisher keine passende Hilfe zu meinem Problem gefunden. Wäre auch danbar wenn mir jemand einen nützlichen Link posten könnte. Danke schon mal im voraus.

Gruß JeyB;-)


----------



## JeyB (10. März 2008)

Hat keiner eine Lösung für mein Problem? Ich finde wirklich nichts passendes dazu.
Wie kann ich eine Spalte von einer Datenbank, die ich bereits in mein Projekt eingebunden habe in eine Datagridview einlesen Konnte schon eine Spalte in einer Text Datei ausgeben oder in einer listbox aber wie funktioniert das ganze wenn ich es in einem Datagridview einlesen möchte?
Benötige dringend Hilfe.


Gruß JeyB


----------



## Lilith (18. Juni 2009)

1. 
hi, bin neu, habe auch vor 1jahr das erstemal von c# gehört^^. bis jetzt konnte mir google und der index sehr gut weiterhelfen, doch nun komme ich mit meinen überlegungen nicht weiter. ich weis nicht, wie ich den code setzen muss, damit das unten genannte auch so geschieht 

2.
der oben genannte code könnte mir helfen aber sql ist nicht mein ding, ich komme einfach nicht wirklich damit klar -.-. zumal ich nicht wüsste, was ich bei database, pw und co eingeben müsste 
würde man das ganze auch ohne sql hinbekommen?

mein genaues prob ist, ich möchte über 3 verschiedene textboxen 3 zahlen eingeben und über eine 2 listboxen 2 elemente. diese sollen dann in der form:

Listbox1.item : Listbox2.item (text1 : text2)  || text3

in eine spalte und zeile geschrieben werden.
text 3 kann auch in eine extra spalte kommen. die spalten sollen vom programm allerdings selbst erstellt werden.
über eine 4. textbox soll die spalte bestimmt werden, in welche die daten sollen und bei mehreren eingaben in die gleiche spalte soll automatisch dann die nächste zeile gewählt werden.

hoffe ihr könnt mir helfen. will das prog endlich fertig bekommen^^.
auf jeden 
thx im voraus

gruß
lilith


edit: rechtschreibteufel^^


----------



## deepthroat (18. Juni 2009)

Hi.


Bitte halte dich an die Netiquette Punkt 15 - Groß-/Kleinschreibung. Danke!
Falsches Forum. C# hat nichts mit C/C++ zu tun. http://www.tutorials.de/forum/net-datenverwaltung/
Gruß


----------



## Lilith (18. Juni 2009)

Sry, für. Bin über die Sufu hier gelandet 
Ich schreibe eig. immer grundsätlich alles Klein, da ich somit nicht immer mit dem problem den ersten Buchstaben habe (meistens ist dann bei mir bis zum 2. oder 3. Buchstaben alles groß -.- und ich bin einfach zu faul sowas zu ändern. Und um dies zu verhindern "alles klein"^^)
werde mein Prob dann nochmlas im richtigen Teil des Forums posten.

gruß
Lilith


----------



## Matthias Reitinger (18. Juni 2009)

Lilith hat gesagt.:


> und ich bin einfach zu faul sowas zu ändern. Und um dies zu verhindern "alles klein"^^


Du hast dich ja nun löblicherweise trotzdem an die Groß-/Kleinschreibung gehalten, darum trifft das jetzt vermutlich den Falschen... aber überleg dir mal Folgendes: wenn du zu faul bist, deine Beiträge möglichst leserlich zu gestalten (und korrekte Groß-/Kleinschreibung trägt zur Leserlichkeit bei), sind im Gegenzug mögliche Helfer vielleicht zu faul, sich deswegen den zusätzlichen Aufwand zu machen, deine Beiträge zu lesen und sich mit deinem Problem zu befassen. Weniger Aufwand für dich bedeutet hier mehr Aufwand für alle anderen. Wenn man in einem Forum eine Frage stellt (und auch eine Antwort erwartet), dann ist es doch im eigenen Sinne, beim Verfassen des Beitrags die nötige Sorgfalt walten zu lassen, um damit die "Hürden" (den Beitrag zu erfassen, das Problem zu verstehen) für potenzielle Hilfswillige möglichst gering zu halten. Darum ist die "Vorschrift" hier, sich an die Rechtschreibregeln zu halten, nicht reine Willkür, sondern hat schon seinen Sinn (auch und gerade für die Fragenden).

Mir ist klar, dass du das nie in Frage gestellt hast, aber das Thema kam (meinem subjektiven Empfinden nach) in letzter Zeit wieder öfters zur Sprache und ich wollte auch mal wieder meinen Senf dazu abgeben.

Grüße, Matthias


----------

