显示数据网格视图

时间:2017-01-10 02:48:47

标签: c# asp.net forms gridview

当我按下“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();

1 个答案:

答案 0 :(得分:0)

您的查询存在多个问题,快速解决方法是在"'中的and"'and之间留出一个空格,通过此操作,您可以通过注入为黑客打开一扇门,所以更好的选择是使用参数化查询。更多建议:

  1. 您正在使用适配器将查询结果收集到DataTable / DataSet,因此您无需在此之前执行查询
  2. 您使用单个查询获取值,因此不必在此处使用DataSet,然后从Dataset获取所需的表,而不是使用Adapter直接将结果表提取到DataTable。
  3. 您也可以使用“使用块”
  4. 简而言之,绑定网格的代码应该是这样的:

    DataTable dsDetalle=new DataTable("Data");           
    using (MySqlCommand commandSql = cn.CreateCommand())
    {
        commandSql.CommandType = CommandType.Text;
        commandSql.CommandText = "select * from detalle where iddetalle=@iddetalle and idlocal=@idlocal";
        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();