Entwickler-Ecke

Datenbanken (inkl. ADO.NET) - Spalte aus tabelle im programm ausgeben


Corsarou - Mi 20.10.10 11:38
Titel: Spalte aus tabelle im programm ausgeben
hallo!

ich hab folgendes problem...
...ich hab eine access datenbank mit einer tabelle VORSPEISE. und da drin hab ich die spalten:

ID - Name
1 - Suppe
2 - Tee
. - .
. - .
. - .

ich möchte den inhalt von der spalte Name in mein programm als checkbox ausgeben. also:
□Suppe
□Tee
□usw.

wie mache ich das? bitte helfts mir!
dank :)

mfg
Corsarou


Moderiert von user profile iconKha: Topic aus C# - Die Sprache verschoben am Mi 27.10.2010 um 19:41


Corsarou - Di 26.10.10 20:23

kann mir keiner helfen? bitte, es ist sehr dringend!!!


Trashkid2000 - Di 26.10.10 21:09

Hi,

also, Du kannst per OleDb auf Deine Access-Datenbank zugreifen.
Der ConnectionString würde dann wie folgt aussehen:

Quelltext
1:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=DER SPEICHERORT DER DATENBANKDATEI;Persist Security Info=false                    

Wenn die Db spezielle Authentifizierung (username, Password) benötigt, so musst Du diese Informationen natürlich auch in den ConnectionString packen.

So, mit diesem ConnectionString erstellst Du eine OleDbConnection, jagst dann einen OleDbCommand auf die Datenbank und liest die Daten mit einem OleDbDataReader.
Das Ganze würde dann so aussehen:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
using (OleDbCommand cmd = new OleDbCommand("Select Name from VORSPEISE", conn))
{
  using (OleDbDataReader reader = cmd.ExecuteReader())
  {
    int fieldOrdinal = reader.GetOrdinal("Name");
    string fieldValue = null;
    while (reader.Read())
    {
      if (!reader.IsDBNull(fieldOrdinal))
      {
        fieldValue = reader.GetString(fieldOrdinal);  
        //ergeuge eine CheckBox mit dem FieldValue  
      }
    }    
  }
}
Aber mal ganz ehrlich, über Google findet man da echt übelst viele Beispiele.

//edit: wenn Du nur die Spalte "Name" abfragst, ist das mit mit dem fieldOrdinal naturlich Quatsch, denn der Wert ist dann immer 0. Wichtig nur, wenn Du mehrere Spalten abfragst!

LG, Marko


Corsarou - Di 26.10.10 22:08

wow, danke für die rasche antwort!

mal sehn ob ichs hinbekomm :D


Corsarou - Di 26.10.10 22:25

hab vergessen zu erwähnen dass mein programm in der wpf anwendung geschrieben wird ^^


Corsarou - Di 26.10.10 23:06

user profile iconTrashkid2000 hat folgendes geschrieben Zum zitierten Posting springen:
Hi,

also, Du kannst per OleDb auf Deine Access-Datenbank zugreifen.
Der ConnectionString würde dann wie folgt aussehen:

Quelltext
1:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=DER SPEICHERORT DER DATENBANKDATEI;Persist Security Info=false                    

Wenn die Db spezielle Authentifizierung (username, Password) benötigt, so musst Du diese Informationen natürlich auch in den ConnectionString packen.

So, mit diesem ConnectionString erstellst Du eine OleDbConnection, jagst dann einen OleDbCommand auf die Datenbank und liest die Daten mit einem OleDbDataReader.
Das Ganze würde dann so aussehen:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
using (OleDbCommand cmd = new OleDbCommand("Select Name from VORSPEISE", conn))
{
  using (OleDbDataReader reader = cmd.ExecuteReader())
  {
    int fieldOrdinal = reader.GetOrdinal("Name");
    string fieldValue = null;
    while (reader.Read())
    {
      if (!reader.IsDBNull(fieldOrdinal))
      {
        fieldValue = reader.GetString(fieldOrdinal);  
        //ergeuge eine CheckBox mit dem FieldValue  
      }
    }    
  }
}
Aber mal ganz ehrlich, über Google findet man da echt übelst viele Beispiele.

//edit: wenn Du nur die Spalte "Name" abfragst, ist das mit mit dem fieldOrdinal naturlich Quatsch, denn der Wert ist dann immer 0. Wichtig nur, wenn Du mehrere Spalten abfragst!

LG, Marko


also ich hab das mal kopiert und in nem button eingefügt. aber er makiert mir Provider, Jet, 4.0, Data Source, Persist und Info rot.

Quelltext
1:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=DER SPEICHERORT DER DATENBANKDATEI;Persist Security Info=false                    


und beim rest makiert er mir OleDbCommand und OleDbDataReader rot.

hilfe :/


Christoph1972 - Mi 27.10.10 06:53

und beim rest makiert er mir OleDbCommand und OleDbDataReader rot.

Es fehlen die Verweise auf diese Klassen. Die musst du natürlich setzen.


Trashkid2000 - Mi 27.10.10 06:53

Hi,

das war natürlich nicht der gesamte Code, sondern nur ein Ausschnitt. Um mal ein paar Stichworte zu nennen, die Dich vielleicht bei Deiner Suche weiterbringen. Denn ein bisschen sollst Du ja auch selber machen.

Wie schon mal geschrieben, ist der ConnectionString dazu, eine OleDbConnection aufzubauen.
Also so:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\TestDB.mdb;Persist Security Info=false";
using (OleDbConnection conn = new OleDbConnection(connectionString))
{
  conn.Open();
  using (OleDbCommand cmd = new OleDbCommand("Select Name from VORSPEISE", conn))
  {
    //...
  }
}

user profile iconCorsarou hat folgendes geschrieben Zum zitierten Posting springen:
und beim rest makiert er mir OleDbCommand und OleDbDataReader rot.

Ja, weil bestimmt der Namespace nicht eingebunden ist:

C#-Quelltext
1:
using System.Data.OleDb;                    


Dass es eine WPF-Anwendung werden soll, ist erstmal egal, das ist nur für die Anzeige der Daten später wichtig. Und bis dahin ist es (glaube ich jedenfalls zu wissen) für Dich noch ein langer Weg.

LG, Marko


Corsarou - Mi 27.10.10 10:13

danke für die hilfe! :)
vielleicht ist es viel verlangt, aber kennst du/kennt ihr eine seite/tutorial bezüglich datenbanken und access?

lg corsarou


Trashkid2000 - Mi 27.10.10 10:44

Hi,

Tutorials bzw. Beispiele sind sehr viele über Google zu finden:
http://lmgtfy.com/?q=c%23+access+oledb

LG, Marko