Laden...

SQL Datenbankdatei, Löschen eines Wertes aus der Datenbank

Erstellt von Karl Reimann vor 11 Jahren Letzter Beitrag vor 11 Jahren 1.051 Views
K
Karl Reimann Themenstarter:in
21 Beiträge seit 2013
vor 11 Jahren
SQL Datenbankdatei, Löschen eines Wertes aus der Datenbank

verwendetes Datenbanksystem: SQL

Ich habe ein Problem mit dem Löschen eines Tabellen Eintrages in einer Microsoft SQL Datenbankdatei. Ich habe die Datenbankdatei in meinen Projekt erstellt, dort Tabellen und Prozeduren erstellt. Nun bin ich bei dem Problem das ich kein Wert aus der Datenbank löschen kann, wegen der folgenden Exception:


Die Prozedur oder Funktion 'Delete' erwartet den '@Id'-Parameter, der nicht bereitgestellt wurde.

mein code:

private void Delete()
        {
            try
            {
                SqlCommand cmd = new SqlCommand("Delete", conn);
                cmd.Parameters.AddWithValue("@Id", 2); 

                conn.Open();
                cmd.ExecuteNonQuery();

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                conn.Close();
            }
        }

meine prozedur:

ALTER PROCEDURE dbo.Delete
	@Id AS int 
AS
	DELETE FROM Verknuepfung
	WHERE		Verknuepfung.RefTestId = @Id

	 DELETE FROM Test
	 WHERE 		Test.Id = @Id

	RETURN

Kann mir einer sagen, warum ich diese Exception bekomme? Das Laden der Informationen aus der Datenbankdatei funktioniert und es sind auch die Id's vergeben von 1-10 bzw. sind die Tabellen alle gefüllt. Muss ich evtl. bei einer SQL Datenbankdatei etwas bei der Parameter-Übergabe beachten?

114 Beiträge seit 2009
vor 11 Jahren

Bekommst du den gleichen Fehler, wenn du so vorgehst?


cmd.Parameters.Add("@Id", SqlType.Int);
cmd.Parameters["@Id"] = 2;

1.696 Beiträge seit 2006
vor 11 Jahren

SqlCommand cmd = new SqlCommand("Delete", conn);

Du muss Parameter angeben!


SqlCommand cmd = new SqlCommand("Delete @Id", conn);

siehe http://openbook.galileocomputing.de/visual_csharp_2010/visual_csharp_2010_24_004.htm#mjcb7167c9d0e658cb195c9840f73556d7

Grüße

Ich bin verantwortlich für das, was ich sage, nicht für das, was du verstehst.

**:::

F
10.010 Beiträge seit 2004
vor 11 Jahren

Und vor allem musst Du dem Command sagen das es eine SP ist, sonst versucht der SqlServer nämlich das als TSQL Befehl auszuführen, und dann fehlt da einiges.

K
Karl Reimann Themenstarter:in
21 Beiträge seit 2013
vor 11 Jahren

Danke für die schnelle Antwort. Es geht jetzt und ich werde mir den von vbprogger verlinkten Artikel genauer ansehen.

Mit freundlichen Grüßen

1.696 Beiträge seit 2006
vor 11 Jahren

btw. du sollst dir abgewöhnen, reservierte Wörte als Name zu nehmen, denn das erschwert zum einen die Fehlersuche, zum anderen bekommst du im schlimmsten Fall seltsames Ergebnisse/Phänomene.

Grüße

Ich bin verantwortlich für das, was ich sage, nicht für das, was du verstehst.

**:::

K
Karl Reimann Themenstarter:in
21 Beiträge seit 2013
vor 11 Jahren

Danke für den Tipp, ich werde es mir merken!