2017-01-10 3 views
1

У меня есть проблема с показом данными табличных при нажатии кнопки «agregar»:показать вид сетки данных

enter image description here

Это показывает небольшой квадрат и нет никаких данных.

cn.Open(); 
MySqlCommand cm = cn.CreateCommand(); 
cm.CommandType = CommandType.Text; 
cm.CommandText = "select * from detalle where iddetalle= '" + txt_boleta.Text + "'and idlocal='" + txtlocal.Text + "'"; 
cm.ExecuteNonQuery(); 
MySqlDataAdapter da = new MySqlDataAdapter(cm); 
DataSet ds = new DataSet(); 
da.Fill(ds,"data"); 
GridView1.DataSource = ds.Tables["data"]; 
GridView1.DataBind(); 
+0

Поскольку ваш запрос в не выполняется хорошо, если он выполняет волю приветствует хакеры через инъекцию –

ответ

0

У вас есть несколько проблем с запросом, Быстрое исправление, давая пространство между "' и and в "'and, Под этим вы открываете дверь для хакеров через инъекции, поэтому лучшим вариантом будет использование параметризованных запросы. несколько предложений:

  1. Вы собираете результат запроса к DataTable/DataSet с помощью адаптера, так что вам не нужно, чтобы выполнить запрос до этого
  2. Вы выборка значений с помощью одного запроса, так что не необходимо использовать DataSet здесь, а затем взять требуемую таблицу из Dataset, вместо этого вы можете напрямую получить таблицу результатов в DataTable с помощью адаптера.
  3. Вы можете использовать Использование блоков, а

Короче код для привязки сетки должен быть таким:

DataTable dsDetalle=new DataTable("Data");   
using (MySqlCommand commandSql = cn.CreateCommand()) 
{ 
    commandSql.CommandType = CommandType.Text; 
    commandSql.CommandText = "select * from detalle where [email protected] and [email protected]"; 
    commandSql.Parameters.AddWithValue("@iddetalle", "txt_boleta.Text"); 
    commandSql.Parameters.AddWithValue("@idlocal", "txtlocal.Text"); 
    MySqlDataAdapter sqlAdapter = new MySqlDataAdapter(commandSql); 
    sqlAdapter.Fill(dsDetalle); 
} 
GridView1.DataSource = dsDetalle; 
GridView1.DataBind(); 
+0

благодарит за ответ, но при копировании кода появляется следующая ошибка sqlAdapter.Fill (dsDetalle, «data»); Ошибка \t \t 2 La Mejor coincidencia де Metodo sobrecargado пункт 'System.Data.Common.DataAdapter.Fill (System.Data.DataTable, System.Data.IDataReader)' Tiene algunos argumentos не válidos \t C: \ Users \ Hardfix1 \ Документы \ Visual Studio –

+0

благодаря , но при обновлении кода язь показать следующую ошибку Ошибка \t \t 2 Uso-де-ла локальной переменной не asignada «dsDetalle» извините за мое невежество, но им нового в programation –

+0

@WladimirArnaldoBriceoMirand: спасибо для попытки и ответа, я сделал обновление в сообщении, не могли бы вы попробовать изменения? –

Смежные вопросы