C# datenbank

  • Geht darum, dass ich in Textboxes verschiedene Daten eingeben möchte (auch buchstaben) und das Programm mir dann alle in der Datenbank (Access) befindlichen daten mit diesen eigenschaften raussucht und in einer tabelle ausgibt.
    Programmcode der Fehlerstelle :

    try
    {
    oleDbConnection1.Open();
    oleDbDataAdapter1.Fill(dataSet11);
    tbl = dataSet11.Tables['Tabelle'];
    DataRow row;
    DataRowView[] drv;
    string a;
    int i, j;
    DataTable tblSearch = tbl.Clone();

    OleDbCommand cmd = new OleDbCommand();
    cmd.CommandText = sSql;
    cmd.Connection = oleDbConnection1;
    OleDbDataReader rdr = cmd.ExecuteReader();

    // dv.Sort = cmd.CommandText;
    drv = dv.FindRows(rdr);
    for(i=0; i<= drv.Length -1; i++)
    {
    row = tblSearch.NewRow();
    for(j = 0; j<= tbl.Columns.Count -1 ; j++)
    {
    row[j] = drv[i].Row[j];
    }
    tblSearch.Rows.Add(row);
    }
    dvSearch = new DataView (tblSearch);
    dg.DataSource = dvSearch;
    dg.CaptionText = "Suchergebnisse";

    }

    catch(Exception ex)
    {
    MessageBox.Show(ex.ToString());
    }
    finally
    {
    oleDbConnection1.Close();
    }

    Die variable "sSql" ist vom Typ her der Art "Select * From <tabelle> Where <bedingng> and <bedingung>
    Fehler ist wahrscheinlich innerhalb dieses Ausschnittes (ohne Garantie):

    cmd.Connection = oleDbConnection1;
    OleDbDataReader rdr = cmd.ExecuteReader();
    // dv.Sort = cmd.CommandText;
    drv = dv.FindRows(rdr);

    Bitte um Hilfe,

    mfg s1ck

  • Ah, es ist wieder Zeit einen Blick in meine Kristallkugel zu werfen! Da hat zur Abwechlsung mal wieder jemand einen 50 Zeilen Quelltext gepostet, gesagt, dass daran ~irgendwas~ nicht funktioniert, und will, dass wir sowohl rausfinden was er eigentlich von uns will, als auch gleich die Lösung zu diesem recht unscharf definiertem Problem präsentieren.

    Bösartigkeitsmode = off; :devil:

    Ernsthaft, es würde zumindest helfen, wenn du kurz erläutern würdest, was genau nicht funktioniert. Oder wenn es einen crash o.ä. gibt, die _genaue_ Zeile sagst, nicht auf einen eine Seite langen Code zeigst und schreist "Da!". :)

  • Garnet mal so verkehrt die Idee ;)

    Also:

    Vorhaben:
    ICh hab ein Programm geschrieben das als Datenbank fungieren soll. Dazu hab ich in C# eine Access Datenbank implementiert bzw. ich lasse diese reinladen.
    Nun hat mein Programm aber auch eine Suchfunktion und um diese dreht es sich hier.

    Was soll sie können?
    ICh hab in meiner Suchfunktion 9 Textboxen die die jeweiligen Tabellen-header repräsentieren (Name, Vorname, Strasse...).
    Wenn ich nun zum Beispiel bei der Textbox "name" ein "M" eingebe, möchte ich, dass er automatisch die Datenbank nach den Einträgen durchsucht in denen der Name mit "m" beginnt und mir diese in einer Tabelle ausgibt. die anderen Felder sind analog zu diesem zu betrachten. Bei Eintrag in zwei feldern sollen beide als Vorraussetzung dienen. (kurz: FILTER)

    So, nun zu dem Programmcode:
    Die Variable sSql beinhaltetdie zuvorschon aus den Textboxen entnommen daten in der Form: "SELECT * FROM <tabelle> WHERE <bedingung> AND <bedingung>..."

    DataRowView[] drv;

    OleDbCommand cmd = new OleDbCommand();
    cmd.CommandText = sSql;
    cmd.Connection = oleDbConnection1;
    OleDbDataReader rdr = cmd.ExecuteReader();

    drv = dv.FindRows(rdr); //rausfinden wieviele Zeilen es sind -> mit schleife ausgeben

    Fehlerquelle:
    die letzten beiden Zeilen desProgrammcodes. Zum einen gibt er eine Überladung des ExecuteReader() an und zum anderen kann ich nicht die Länge des Arrays drv ermitteln.

    Bei weiteren Fragen einfach posten und wenn ihr ne Lösung / Alternative habt dann nur zu :)

    mfgs1ck

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!