日期:2014-05-17  浏览次数:20949 次

必须声明标量变量 "@**"的疑难问题!
代码如下:
using (SqlConnection conn = new SqlConnection(@"Persist Security Info=False;Integrated Security=SSPI;Initial Catalog=BYSJ;server=(local)"))
  {
  conn.Open();
  using (SqlCommand cmd = new SqlCommand())
  {
  cmd.CommandText = "select * from BookInformation where BookStuNum=@StuNum";
  cmd.Parameters.Add(new SqlParameter("StuNum", label10.Text));
  SqlDataAdapter adapter = new SqlDataAdapter(cmd.CommandText ,conn);
  DataSet dataset = new DataSet();
  adapter.Fill(dataset, "BookInformation");
  adapter.FillSchema(dataset, SchemaType.Source, "BookInformation");
  DataTable table = dataset.Tables["BookInformation"];
  dataGridView1.DataSource = dataset.Tables["BookInformation"];



  }
  }

请问下这个代码为什么会在 adapter.Fill(dataset, "BookInformation");这里报错,说必须声明标量变量 "@StuNum"。
但是如果不用参数化查询,而是以实际字符代替"@StuNum"却能查询成功,这是为什么?请指正!

------解决方案--------------------


cmd.Parameters.Add(new SqlParameter("@StuNum", label10.Text));