请问怎样做一个通用的填充dataset的过程?
把存储过程的名称、参数放在一个字符串里,用分隔符隔开,循环用AddWithValue动态加载参数,这样有可能实现吗?下面改成动态的要怎么改?
public bool FillDataset(ref SqlConnection myConn, ref DataSet ds, ref string name,ref string d1, ref string d2)
{
SqlDataAdapter da = new SqlDataAdapter(name, myConn);
da.SelectCommand.CommandType = CommandType.StoredProcedure;
da.SelectCommand.Parameters.AddWithValue( "@d1 ", d2);
da.SelectCommand.Parameters.AddWithValue( "@d2 ", d2);
try
{
da.Fill(ds, "UserTable ");
}
catch
{
return false;
}
return true;
}
------解决方案--------------------up
------解决方案--------------------这么做除了把重复写的代码几行少写几次之外,有意义吗?
算是模块化还是算作更好的面向对象了?
如果调用你函数的同事需要根据Fill的DataTable的名字来做一些逻辑判断怎么办?
------解决方案--------------------如果查询的结果差异很大,你自动填充有什么用。
自动填充过程是可以的。fill中的表名是别名而已。
------解决方案--------------------作成动态的就是拼接字符串了
public bool FillDataset(ref SqlConnection myConn, ref DataSet ds, ref string name,ref string d1, ref string d2)
{string testSql= "exec "+name+ " ' "+d1+ " ', ' "+d2+ " ' ";
SqlDataAdapter da = new SqlDataAdapter(testSql, myConn);
da.SelectCommand.CommandType = CommandType.Text;
//da.SelectCommand.Parameters.AddWithValue( "@d1 ", d2);
//da.SelectCommand.Parameters.AddWithValue( "@d2 ", d2);
try
{
da.Fill(ds, "UserTable ");
}
catch
{
return false;
}
return true;
}
PS:不知道你为什么要用ref参数
------解决方案--------------------bitpolar(独自看天) 说的没错。
------解决方案--------------------看微软的MicrosoftEnterprise Library January 2006