Wie nehme ich einen Wert aus einer Datenbank? Muss die Skalarvariable "@id1" deklarieren

StackOverflow https://stackoverflow.com/questions/8342555

  •  27-10-2019
  •  | 
  •  

Frage

  public partial class Form3 : Form
  {       
    string var;
    int ID1;

    private void button1_Click(object sender, EventArgs e)
    {
        ID1 = int.Parse(textBox1.Text);
        SqlConnection cn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\asp\Desktop\DatabasesPractice\DatabasesPractice\soccer.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
        SqlCommand dataCommand = new SqlCommand("SELECT Name FROM team WHERE ID = @ID1", cn);

        cn.Open();
        var = Convert.ToString(dataCommand.ExecuteScalar());
        label3.Text = var;

    }
 }

Es gibt mir einen Fehler, der besagt, dass ich die Skalarvariable deklarieren muss @ID, Ich suche überall und kann keine Lösung für meinen speziellen Fall bekommen.

Danke für die Hilfe Menschen! Ihre Lösungen funktionierten: D.

War es hilfreich?

Lösung

public partial class Form3 : Form 
{        
    string var; 
    int ID1; 

private void button1_Click(object sender, EventArgs e) 
{ 
    ID1 = int.Parse(textBox1.Text); 
    SqlConnection cn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\asp\Desktop\DatabasesPractice\DatabasesPractice\soccer.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"); 
    SqlCommand dataCommand = new SqlCommand("SELECT Name FROM team WHERE ID = @ID1", cn); 
    dataCommand.Parameters.AddWithValue("@ID1", ID1); // this is the new line of code

    cn.Open(); 
    var = Convert.ToString(dataCommand.ExecuteScalar()); 
    label3.Text = var; 

} 

}

Siehe oben, ich habe hinzugefügt dataCommand.Parameters.AddWithValue("@ID1", ID1);. Dies definiert Ihren Parameter für Ihre SQL -Abfrage und übergibt ihn den Wert. Ich nahm an, dass Sie die Variable wollen würden ID1 Um der Wert Ihres SQL -Parameters zu sein @ID1.

Andere Tipps

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.aspx

SqlCommand hat ein Parameters Sammlung.

siehe auch: http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.parameters.aspx

zitieren:

using (SqlConnection connection = new SqlConnection(connectionString))
{
    SqlCommand command = new SqlCommand(commandText, connection);
    command.Parameters.Add("@ID", SqlDbType.Int);
    command.Parameters["@ID"].Value = customerID;

    // Use AddWithValue to assign Demographics.
    // SQL Server will implicitly convert strings into XML.
    command.Parameters.AddWithValue("@demographics", demoXml);

    try
    {
        connection.Open();
        Int32 rowsAffected = command.ExecuteNonQuery();
        Console.WriteLine("RowsAffected: {0}", rowsAffected);
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
}

Sie müssen den Wert des Parameters weitergeben. Fügen Sie diese Zeile direkt nach der Initialisierung der DataCommand -Variablen hinzu:

dataCommand.Parameters.Add("@ID", ID1);

Sie müssen dem DataCommand einen Parameter hinzufügen, weil Sie sagten, es gibt einen.

Id = @id1

teilt dem Server an, die Daten aus dem Parameter @id1 zu pucken. Dann deklarierst du keinen Parameter.

Überprüfen Sie die Parametersammlung im DataCommand -Objekt. Fügen Sie einen Parameter hinzu.

Sie müssen den Parameter zum Parameter hinzufügen SqlCommand.Parameters Sammlung, weil Sie haben @ID1 Innerhalb Ihrer Anfrage.

Mach das vorher ExecuteScalar

dataCommand.Parameters.Add(new SqlParameter("@ID1", ID1));

komplette Lösung

public partial class Form3 : Form
{
    string var;
    int ID1;

    private void button1_Click(object sender, EventArgs e)
    {
        ID1 = int.Parse(textBox1.Text);

        SqlConnection cn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\asp\Desktop\DatabasesPractice\DatabasesPractice\soccer.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
        SqlCommand dataCommand = new SqlCommand("SELECT Name FROM team WHERE ID = @ID1", cn);

        dataCommand.Parameters.Add(new SqlParameter("@ID1", ID1));

        cn.Open();

        var = Convert.ToString(dataCommand.ExecuteScalar());

        label3.Text = var;
    }
}

hoffe das hilft

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top