帮助在C#中使用SQL select语句

时间:2011-03-23 17:44:51

标签: wpf datagrid c#-to-vb.net sql

我正在尝试使用SQL中的简单SELECT语句从数据库中检索某些行并将其显示在数据网格中。现在我要做的是将检索到的值乘以某个因子然后显示它。我试图通过以下方式实现它:

我已将PerDoseSize1声明为双变量,它从函数中获取其值。我不能这样做。 它给我一个错误,说“PerDoseSize1不是一个有效的列”

  public void FillDG1(string Chemical_Name0, string Chemical_Name1, string Chemical_Name2, string Chemical_Name3,double PerDoseSize1)
{

  objDs.Clear();
  string connString ="Data Source=dk1;Integrated Security=True";
  SqlConnection con = new SqlConnection(connString);
  con.Open();
  SqlCommand cmd = new SqlCommand();
  cmd.Connection = con;
  cmd.CommandType = System.Data.CommandType.Text;
  cmd.CommandText = "SELECT [Chemical Name],([GWP])*(perdosesize) AS GlobalWarming, ([ODP])*(perdosesize) AS OzoneDepletion,  [WDP] AS WaterDepletion ,[FDP] AS FossilDepletion FROM [Surfactants$] WHERE ([Chemical Name] IN ( @ChemicalName0, @ChemicalName1,@ChemicalName2 ,@ChemicalName3)) ";
  cmd.Parameters.AddWithValue("@ChemicalName0",Chemical_Name0);
  cmd.Parameters.AddWithValue("@ChemicalName1", Chemical_Name1);
  cmd.Parameters.AddWithValue("@ChemicalName2", Chemical_Name2);
  cmd.Parameters.AddWithValue("@ChemicalName3", Chemical_Name3);
  cmd.Parameters.AddWithValue("@perdosesize", PerDoseSize1);
 SqlDataAdapter dAdapter = new SqlDataAdapter();
  dAdapter.SelectCommand = cmd;
  dAdapter.Fill(objDs);
 DataTable myDataTable = objDs.Tables[0];
 DG1.DataContext = objDs.Tables[0].DefaultView;     
  cmd.ExecuteNonQuery();
  MessageBox.Show(ChemicalName0,ChemicalName1);
  con.Close();
}

它似乎仍然不起作用,它仍然是错的吗?请帮忙!

2 个答案:

答案 0 :(得分:2)

你写的方式:

"SELECT ([GWP])*(PerDoseSize1) AS GlobalWarming, ([ODP])*(PerDoseSize1) 

无效,因为您传入的函数参数不会在SQL中替换。

因此,您可以尝试为PerDoseSize1创建一个Parameter参数,并将其传递给SQL,就像您使用AddWithValue一样。

答案 1 :(得分:0)

  

我已将PerDoseSize1声明为   获得其价值的双变量   来自一个函数

那又怎样?如何进入SQL?到目前为止,没有人说这个。您必须将它放入SQL并将其分配给参数。它不会神奇地挂钩。