C#关于DataAdapter 的添加参数问题 在线等 详细答完给200分
发布网友
发布时间:2022-04-08 10:26
我来回答
共5个回答
热心网友
时间:2022-04-08 11:55
1、private SqlDataAdapter CreateDataAdaper(string procName, SqlParameter[] prams)
这个函数作用是执行一个带参数的存储过程并返回
一个存储过程有多个参数,当然你可以固定死设定两个参数比如
CreateDataAdaper(string procName, SqlParameter id,SqlParameter name)
但是为了方法的公用,采用SqlParameter[]这样一个组,在组中的话就可以灵活设置参数的数量,但是方法却可以公用
2、foreach (SqlParameter parameter in prams)
dap.SelectCommand.Parameters.Add(parameter)
这个遍历很简单,就是从刚才说的SqlParameter[]中把参数一个一个的取出来,让后在SelectCommand的参数中添加进去
3、dap.SelectCommand.Parameters.Add(……)
这个是具体实例化一个参数,包括该参数的名称、类型、是否返回值等的信息,当然你也可以这么写
SqlParameter a=new SqlParameter(……);
dap.SelectCommand.Parameters.Add(a);
4、回到你的方法调用CreateDataAdaper()
你可能要这么做
SqlParameter[] paras=new SqlParameter[3]//设定三个参数
paras[0]=new SqlParameter(……)//设定第一个参数信息,当然你也可以调用你问题中写的MakeInParam()这个方法构造具体参数
paras[0]=MakeInParam(……);
paras[1],paras[2]依次类推
最后你再调用应该是这样
SqlDataAdapter adapter=CreateDataAdaper("你的存储过程名",paras);
6、dap.SelectCommand.Parameters.Add(parameter);
}
//加入返回参数
dap.SelectCommand.Parameters.Add(new SqlParameter("ReturnValue", SqlDbType.Int, 4,
ParameterDirection.ReturnValue, false, 0, 0,
string.Empty, DataRowVersion.Default, null)); return dap;
至于后面添加查询参数和添加查询结果参数
我觉得只是为了区分故意不写到一起而已
在我看来你完全可以把查询结果参数也搞到那个参数组中去
这样讲楼主明白了么?
热心网友
时间:2022-04-08 13:13
private SqlDataAdapter CreateDataAdaper(string procName, SqlParameter[] prams)
看参数.prams是个数组.在接收参数前已经对这些参数进行了实例.
所以得用foreach来将它们逐个添加.一个都不能少.
而dap.SelectCommand.Parameters.Add(new...)
只是添加一个新实例的参数(SqlParameter).并声明该参数的参数名.类型等等.
热心网友
时间:2022-04-08 14:48
一个SelectCommand很能包含多个参数。
在这个问题中,包含若干由MakeInParam函数构造的查询参数,和一个查询结果参数。
你问的两个函数,第一个是添加所有查询参数,第二个是添加查询结果参数(参数方向ParamterDirection不同)。
热心网友
时间:2022-04-08 16:39
//新建表
DataTable dt=new DataTable();
//定义表结构
dt.Columns.Add("Id",typeof(System.Int32));
dt.Columns.Add("Code",typeof(System.String));
dt.Columns.Add("Name",typeof(System.String));
//添加新行
for(int i=0;i<=3;i++)
{
DataRow dr=dt.NewRow();
dr[0]=i;
dr[1]="s"+i;
dr[2]="sic"+i;
dt.Rows.Add(dr);
}
热心网友
时间:2022-04-08 18:47
在这上边看代码,太费劲了。
你把代码发给我,我给你调试下,就知道哪错了。
qq:274107336