2017-08-01 1 views
0

Im Moment benutze ich eine Access-Datenbank als Dummy-ODBC-Datenbank (damit ich keine wertvollen Informationen während der Entwicklung beschädigen) und ich habe Probleme beim Einfügen von Datensätzen.ODBC Einfügen funktioniert nicht auf Access-Datenbank

ich von dieser DB nur in Ordnung und das Insert Befehl durchlesen kann, aber wenn ich versuche, den Datensatz zu lesen zurück ist es nicht da

using (OdbcConnection conn = new OdbcConnection(@"Driver={Microsoft Access Driver (*.mdb, *.accdb)}; Dbq=" + Directory.GetCurrentDirectory() + @"\Setup DB.accdb")) 
    { 
     conn.Open(); 
     int ID; 

     //Autoincrement doesn't work, so new ID is LASTID++ 
     using (OdbcCommand query = new OdbcCommand("SELECT MAX(ID) AS LASTID FROM Setups", conn)) 
     { 
      using (var reader = query.ExecuteReader()) 
      { 
       reader.Read(); 
       ID = int.Parse(reader["LASTID"].ToString()) + 1; 
      } 
     } 

     transaction = conn.BeginTransaction(); 
     using (OdbcCommand insert = new OdbcCommand("INSERT INTO Setups (ID, PartNumber,LeafSide,Width) VALUES (?, ?, ?, ?)", conn)) 
     { 
      //If ID is left out^then an error is thrown about the ID being null 
      insert.Parameters.Add("@ID", OdbcType.Int).Value = ID; 
      insert.Parameters.Add("@PartNumber", OdbcType.VarChar).Value = PartNo; 
      insert.Parameters.Add("@LeafSide", OdbcType.VarChar).Value = AorB; 
      insert.Parameters.Add("@Width", OdbcType.Double).Value = Width; 

      insert.Transaction = transaction; 

      //This temp shows that 1 record is modified 
      int temp = insert.ExecuteNonQuery(); 

      transaction.Commit(); 
     } 
    } 
    //try catch and rollback removed for display 

Ich habe ein Gefühl, das ich wirklich etwas fehle bin Einfach, aber für das Leben von mir kann ich nicht herausfinden, was es ist.

Antwort

0

Es stellt sich heraus, dass ich etwas Einfaches vermisste. Da ich Directory.GetCurrentDirectory() + @ "\ Setup DB.accdb" als meinen Speicherort verwendete, änderte ich die DB in dem/bin/Debug-Ordner anstelle von dem, den ich überprüfte.

Dank this answer für mich machen realisieren:

wenn Ihre C# -Code ohne Ausnahmen ausführt, ist es, die Datenbank zu aktualisieren, Wahrscheinlich werden Sie verwendet AttachDbFilename = | Datadirectory | \ yourDB.mdf in Ihrer Connection bedeutet, dass sich die aktualisierte Datenbank im Unterordner BIN \ DEBUG Ihres Projekts befindet.