用返回数据集填充gridView

时间:2014-04-25 08:16:51

标签: c# gridview ado.net

如何将ds从sql类传递给表单类

在我的表单类

sqlCls floor = new sqlCls();
floor.getByFloor(floorNo);
reportFormDataGridView.DataSource = ds.Tables[0]; ****** 

在sql类中。地板方法

public DataSet getByFloor(int floorNo)
{
    DataSet ds = new DataSet();
    SqlConnection conn = connectionCls.openConnection();
    SqlCommand com = new SqlCommand("select * from table where floorsNo = " + floorNo, conn);

    SqlDataAdapter SE_ADAPTAR = new SqlDataAdapter(com);
    SE_ADAPTAR.Fill(ds);
    conn.Close();

    return ds;
}

1 个答案:

答案 0 :(得分:2)

GridViews可以将DataSet作为DataSource,不需要使用表格。

这样做:

sqlCls floor = new sqlCls();
var ds = floor.getByFloor(floorNo);
reportFormDataGridView.DataSource = ds;

您的代码中存在SQL Injection个漏洞。请考虑使用SQL参数而不是未经过类型化的输入。

所以在你的情况下,它将是:

public DataSet getByFloor(int floorNo)
{
    DataSet ds = new DataSet();

    SqlConnection conn = connectionCls.openConnection();
    SqlCommand com = new SqlCommand("select * from table where floorsNo = @floorsNo", conn);
    com.Parameters.AddWithValue("@floorsNo", floorNo);

    using(SqlDataAdapter SE_ADAPTAR = new SqlDataAdapter(com))
    {  
        SE_ADAPTAR.Fill(ds);
        conn.Close();
    }

    return ds;
}

SqlDataAdapter实现了IDisposable接口,因此您可以将其包装在using块中,以便在执行流离开作用域时自动处理资源。