Variable in Datenbankanweisung



  • Hallo liebes Forum,

    ich möchte eine SQL Anweisung mit einer Variablen an eine Access Datenbank senden.

    String^ baum = "Ulme";
    baumartTableAdapter->_commandCollection[2]->Parameters->AddWithValue("?baum", baum);
    baumartTableAdapter->Update1();
    

    Die SQL Anweisung sieht wie folgt aus:

    UPDATE baumart SET baumart = '?baum' WHERE (id = 1)
    

    Ich bekomme folgende Fehlermeldung, welche ich nicht gelöst bekomme: error C2248: "test::holzrechnerDataSet2TableAdapters::baumartTableAdapter::_commandCollection": Kein Zugriff auf private Member, dessen Deklaration in der test::holzrechnerDataSet2TableAdapters::baumartTableAdapter-Klasse erfolgte.

    Gruss Tobias



  • Ich wollte noch ergänzen, dass die Variable hier zum testen von mir festgelegt wurde. Später soll die Variable durch den Inhalt einer Textbox, welche vom Anwender eingetragen wird, festgelegt werden.

    Gruss



  • - Was passiert, wenn Du den Parameter neu erstellst und die Paramters.Add()-Methode verwendest?
    - Ich denke nicht, dass Du den Parameter im SQL-String in Hochkommatas einschließen mußt, denn das wäre ja nun doppelter Schutz.



  • Hallo,

    vielen Dank für den Tipp mit Parameters.Add ! Ich habe mal Google bemüht und habe auch einige unterschiedliche Ansätze gefunden. Leider kann ich dies aber nicht zum funktionieren bringen (Fehlender Bezeichner etc.). Kannst Du mir vielleicht einen Gedankenanstoss geben, wie dies richtig angewendet wird?

    Gruss Tobias



  • Hier ein Beispiel in C# und MySQL:

    String sql = "INSERT INTO mail (datum,proc,mailid,comm) VALUES (?datum,?proc,?iden,?comm)"; 
    MySqlCommand cmd = new MySqlCommand(sql, cnc);
    cmd.Parameters.Add(new MySqlParameter("datum", MySqlDbType.String));                    
    cmd.Parameters.Add(new MySqlParameter("proc", MySqlDbType.String));                    
    cmd.Parameters.Add(new MySqlParameter("iden", MySqlDbType.String));                    
    cmd.Parameters.Add(new MySqlParameter("comm", MySqlDbType.String));                    
    cmd.Parameters[0].Value = datum;
    cmd.Parameters[1].Value = proc;
    cmd.Parameters[2].Value = iden;
    cmd.Parameters[3].Value = comm;
    
    cmd.ExecuteNonQuery();
    

Anmelden zum Antworten