如何将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;
}
答案 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
块中,以便在执行流离开作用域时自动处理资源。