Помогите с использованием оператора SQL select в C # - PullRequest
0 голосов
/ 23 марта 2011

Я пытаюсь извлечь некоторые строки из базы данных с помощью простого оператора SELECT в SQL и отобразить их в таблице данных. Теперь мне нужно умножить полученные значения на некоторый коэффициент и затем отобразить его. Я пытаюсь добиться этого следующим образом:

Я объявил 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 ]

2 голосов
/ 23 марта 2011

Как вы это написали:

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

Не будет работать, потому что передаваемый аргумент функции не будет подставлен в ваш SQL.

Таким образом, вы можете попробовать создать аргумент Parameter для PerDoseSize1 и передать его в SQL, как вы делаете это с AddWithValue.

0 голосов
/ 23 марта 2011

Я объявил PerDoseSize1 как двойную переменную, которая получает свое значение от функции

И что?Как это входит в SQL?Пока НИЧЕГО не сказано.Вы должны поместить его в SQL и назначить его параметру.Он не будет волшебным образом подключаться.

...