Ich habe eine SQL Server-Datenbank in einem C# -Projekt.SQL Server-Datenbank löscht Datensätze nicht
Ich benutze eine Verbindungszeichenfolge, um es zu verbinden .. Ich kann die Methode ExecuteNonQuery
verwenden, um Daten einzufügen, kein Problem dort.
Aber wenn ich lösche, löscht es nur für einen Moment, sobald ich die Anwendung neu starte, rollt es die Löschung zurück. Irgendwelche Ideen?
PS: Ich habe die Zeichenfolge in einer direkten Abfrage getestet, und es hat gut funktioniert.
public void executeNonQuery(string input)
{
db.Open();
SqlCommand cmd = new SqlCommand(input, db);
cmd.ExecuteNonQuery();
db.Close();
}
EDIT: STREICHUNG Code:
private void buttonSletPost_Click(object sender, EventArgs e)
{
if(dataGridView1.GetCellCount(DataGridViewElementStates.Selected)>0){
for (int i = 0;i < dataGridView1.GetCellCount(DataGridViewElementStates.Selected); i++)
{
String str1 = String.Format("WARNING about to DELETE:\n {0} \n BE CAREFULL NO TURNING BACK NOW!", Regnskab.getInstance().dbSelectPostID(dataGridView1.SelectedCells[i].Value.ToString())[0].ToString());
if (MessageBox.Show(str1, "Confirm Deletion", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
string str = String.Format("DELETE FROM PostTable WHERE PostID={0}", dataGridView1.SelectedCells[i].Value.ToString());
Database.getInstance().executeNonQuery(str);
Console.WriteLine(str);
}
}
}else {MessageBox.Show("No cells selected");}
}
Welche folgende Ausgabe geben wird:
DELETE FROM PostTable WHERE PostID=7
Verbindungszeichenfolge in app.config:
<connectionStrings>
<add name="EndProject.Properties.Settings.DBtestConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\DBtest.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True" providerName="System.Data.SqlClient" />
private Database()
{
string connStr = ConfigurationManager.ConnectionStrings["EndProject.Properties.Settings.DBtestConnectionString"].ConnectionString;
db = new SqlConnection(connStr);
}
Und dann öffne ich und schließe es, also ist die Verbindung nicht jedes Mal öffnen.
Um ehrlich zu sein:
ich nicht genau weiß, wo meine DB Informationen zu sehen, hier ein paar Informationen von Immobilien in VS2010.
Anbieter: .NET Framework-Datenanbieter für SQL Server
Typ: Microsoft SQL Server
Andrew 3.: Ich denke, sie vorübergehend gelöscht werden, weil ich die Informationen in meinem Datagridview neu geladen und von dort aus ist es weg . Aber dann, wenn ich die Anwendung schließe und starte es wieder, ist es wieder ...
Auch ich habe gerade mit VS2010 Server Explorer überprüft und habe eine "Show Data" nach dem Löschen (bevor ich es heruntergefahren) und es warn nicht gelöscht.
Aber ich bin jetzt völlig ahnungslos. :-(
könnten Sie bitte den Code angeben, mit dem Sie die Tabelle (n) oder Datenbank (en) löschen? –
Arbeiten Sie mit Visual Studio und überwachen, dass Sie "In Ausgabeverzeichnis kopieren" auf "Immer kopieren" oder "Wenn neuere Kopie" eingestellt haben? (Obwohl das Ihrer Aussage widerspricht, dass das Einfügen kein Problem ist - aber überprüfen Sie es trotzdem). – Olaf
Ich würde gerne 1) sehen, wo Sie die Verbindung erstellen und entsorgen (ich hoffe, Sie speichern es nicht oder halten es für mehrere Befehle am Leben) 2) genau was SQL Sie verwenden 3) Was Sie denken, dass die Zeilen sind "momentan gelöscht" 4) Was lässt dich denken, dass sie 'zurückgerollt' sind? –