ExecuteNonQuery() nicht speichern beliebiger Datensätze

Arbeite ich eine WinForms-basierten C# - tool, das hat eine angeschlossene MDF-Datei-Datenbank. Ich versuche, die SqlCommand.ExecuteNonQuery() Methode, einen Datensatz zu speichern, um das angeschlossene MDF-Datenbank, aber der Eintrag wird nicht gespeichert. Kein Fehler oder eine exception Auftritt; problem ist nur, dass der Datensatz ist nicht wirklich gespeichert.

Ich habe eine Console.WriteLine an der Spitze, was zeigt die Abfrage, die ich bin versucht zu laufen. Seine korrekte syntax und Weise, und wenn ich kopieren und einfügen aus der Ausgabe von windows und führen Sie es separat, es funktioniert.

Habe ich korrekt definiert die Verbindungszeichenfolge als die folgenden, und es funktioniert gut für das abrufen von Datensätzen:

public static String connectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\TestBuildDB.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";

Hier die Funktion, die ich zum speichern von Datensätzen:

public static void PerformDBWriteTransaction(string inputSQLStatement)
{
    Console.WriteLine(inputSQLStatement);
    DataTable returnDataTable = new DataTable();
    SqlConnection sqlConnection = new SqlConnection();
    sqlConnection.ConnectionString = connectionString;
    SqlCommand cmd = new SqlCommand();
    cmd.Connection = sqlConnection;
    cmd.CommandType = CommandType.Text;
    cmd.CommandText = inputSQLStatement;
    cmd.Connection.Open();
    try
    {
        cmd.ExecuteNonQuery();
    }
    catch (SqlException ex)
    {
        errorMessages.Clear();
        errorMessages.Append("The following errors were found in the SQL statement:\n\n");

        for (int i = 0; i < ex.Errors.Count; i++)
        {
            errorMessages.Append("Index #" + i + "\n" +
                "Message: " + ex.Errors[i].Message + "\n" +
                "LineNumber: " + ex.Errors[i].LineNumber + "\n" +
                "Source: " + ex.Errors[i].Source + "\n" +
                "Procedure: " + ex.Errors[i].Procedure + "\n");
        }
        MessageBox.Show(errorMessages.ToString());
    }
    finally
    {
        cmd.Connection.Close();
    }
}

Kann mir jemand sagen, was das problem sein könnte ? Brauche ich zum ausführen eines 'commit' irgendwie ?

EDIT:

Ich hab das problem gefunden, und geschrieben haben, bis eine Lösung unten .. Danke an alle die mir geholfen obwohl 🙂

  • Was ist in inputSQLStatement?
  • Die SQL-Anweisung, die ich versuche auszuführen .. im Grunde ist es eine insert-Anweisung ..
  • Sie sind nicht machen einen .Öffnen Sie auf Ihrem Anschluss. - Sry gerade gesehen das es das Letzte ist, was genannt wird auf die Verbindung.
  • Ich bin, genau vor die try-Anweisung ..
  • don ' T sehen ein problem mit dem code, was ist die SQL-Sie passieren?
  • Ein Beispiel inputSQLStatement kommen in dieser Funktion ist diese: INSERT INTO Products (Name, Barcode, TypeID, Region, Comments, Enabled) VALUES ('werew', 'rew', 1, 'werwer', 'wer', 1)
  • Versuchen Sie, die .open-Anweisung innerhalb des try-catch - ich denke, sollte es dort trotzdem.
  • funktioniert immer noch nicht .. keine Fehler/Ausnahmen, aber die Aufzeichnung wird nicht gespeichert .. Jup du hast Recht, logisch sollte es dort ..
  • Ich bin nicht zu sehen, ein direktes problem. Versuchen Sie das einwickeln der gesamte Inhalt der Methode in einem try/catch und sehen, ob es eine Exception geworfen, die du nicht fangen.
  • habe gerade versucht, dass so gut .. Versucht wickeln den gesamten code in einem try-catch-und debuggt durch Sie Zeile für Zeile ... keine Ausnahmen erkannt ..
  • Letzte, was ich weiß, zu prüfen, ist, dass die db-Datei ist nicht schreibgeschützt.
  • Wie kann ich das überprüfen ?
  • Rechtsklick auf die Datei, wählen Sie Eigenschaften aus. Stellen Sie sicher, dass das Attribut schreibgeschützt nicht aktiviert ist.
  • Ich sehe nicht, dass die option irgendwo .. EDIT: ich denke, du meintest die eigentliche MDF-Datei-Eigenschaften .. keine seiner nicht überprüft, und auch das, was ist, wenn ich versuche die Abfrage separat, es speichert .. es nur nicht speichern wenn ich es in meiner Anwendung ..
  • Wie werden Sie überprüfen, ob Ihr Datensatz eingefügt wurde? Die Beurteilung durch Ihre Verbindungszeichenfolge, die Sie verwenden, user-Instanzen msdn.microsoft.com/en-us/library/bb264564(v=sql.90).aspx

InformationsquelleAutor Ahmad | 2012-09-24
Schreibe einen Kommentar