如何从数据库中获取值?必须声明标量变量"@ID1"

本文关键字:quot 声明 标量 变量 @ID1 数据库 获取 | 更新日期: 2023-09-27 18:16:37

  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;
    }
 }

它给了我一个错误,说我必须声明标量变量@ID,我到处搜索,不能得到我的具体情况的解决方案。

谢谢大家的帮助!D

如何从数据库中获取值?必须声明标量变量"@ID1"

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; 
} 

}

见上文,我添加了dataCommand.Parameters.AddWithValue("@ID1", ID1);。它所做的是为SQL查询定义参数并将值传递给它。我假设您希望变量ID1作为SQL参数@ID1的值。

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

SqlCommand有一个Parameters集合。

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

:

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);
    }
}

您需要传入参数的值。在初始化dataccommand变量之后添加这一行:

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

您需要为dataccommand添加一个参数,因为您说有一个。

ID = @ID1

告诉服务器从参数@ID1获取数据。那么就不用声明形参了。

检查dataccommand对象的Parameters收集。添加参数

您必须将Parameter添加到SqlCommand.Parameters集合中,因为您在查询中设置@ID1

ExecuteScalar

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

的完整解决方案
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;
    }
}

希望对您有所帮助