2015-08-14 4 views
0
string ddorder = DropDownList2.SelectedValue; // column 
string ddtype = DropDownList3.SelectedValue; //asc or desc 
String str1 = "Select * from table1 order by("+ddorder+" "+ddtype+")"; 

// есть ошибка, связанная с ddtype, что я делаю неправильно?Dropdownbox.selectedvalue переход на sql комментарий

SqlCommand cmd = new SqlCommand(str1, con); 
con.Open(); 
cmd.ExecuteNonQuery(); 
SqlDataAdapter da1 = new SqlDataAdapter(); 
da1.SelectCommand = cmd; 
DataSet ds1 = new DataSet(); 
da1.Fill(ds1, DropDownList2.SelectedValue); 
GridView2.DataSource = ds1; 
GridView2.DataBind(); 
con.Close(); 
+2

Что такое ошибка? –

+0

protected void Button3_Click (отправитель объекта, EventArgs e) код находится внутри этого –

+0

cmd.ExecuteNonQuery(); Здесь отображается ıt, но из-за + ddtype + в строке str1. –

ответ

0

Насколько я понимаю, вам не нужно использовать ( и ) в порядке п. It's syntax не используется для ( или ).

Например,

order by id desc 

будет работать, но

order by (id desc) 

не будет работать.

Кстати, использовать using statement распоряжаться вашим SqlConnection, SqlCommand и SqlDataAdapter автоматически вместо вызова метода Close вручную.

Также вам не нужна часть cmd.ExecuteNonQuery(); для инструкции SELECT. Это не нужно, так как это только выполните ваш запрос выбора. Он ничего не делает или не возвращает.

Несколько вещей больше;

  • Измените свой table1 на что-то значимое.
  • Не использовать SELECT *. It's quite bad.
+0

Спасибо, что решили (eyvallah) :) –

0

Снимите скобку в "порядке" пункта:

String str1 = "Select * from table1 order by "+ddorder+" "+ddtype; 
+0

Это не дает ответа на вопрос. Чтобы критиковать или просить разъяснения у автора, оставьте комментарий ниже их сообщения. – duffy356

+0

Это решило бы его проблему, прочитав ошибку: Исключение типа «System.Data.SqlClient.SqlException» произошло в System.Data.dll, но не было обработано в коде пользователя. Дополнительная информация: Неправильный синтаксис рядом с ключевым словом «DESC» – Zaki

0

Использование Dynamic Query:

Изменить здесь:

string ddorder = DropDownList2.SelectedValue; // column 
string ddtype = DropDownList3.SelectedValue; //asc or desc 
String str1 = "exec(Select * from table1 order by "+ddorder+" "+ddtype+")"; 

и

SqlCommand cmd = new SqlCommand(str1, con); 
con.Open(); 
cmd.ExecuteNonQuery(); 
SqlDataAdapter da1 = new SqlDataAdapter(); 
da1.SelectCommand = cmd; 
DataSet ds1 = new DataSet(); 
da1.Fill(ds1); 
GridView2.DataSource = ds1; 
GridView2.DataBind(); 
con.Close();