首页 > 开发 > 综合 > 正文

C#通过ODBC调用DB2存储过程

2024-07-21 02:17:56
字体:
来源:转载
供稿:网友
 

db2版本:db 2 udb 8.x for linux 

.net 中 ,用odbc调用db2存储过程,不能使用这种类似oledb(ado)调用存储过程的常用方法:

system.data.odbc.odbccommand cmd=null;

system.data.odbc.odbcconnection con =new system.data.odbc.odbcconnection(system.configuration.configurationsettings.appsettings["connectionstring"]);

cmd=new system.data.odbc.odbccommand("reportplan",con) ;
cmd.commandtype=system.data.commandtype.storedprocedure;

con.open();

 parm=cmd.createparameter();
 parm=new system.data.odbc.odbcparameter("v_baseno",system.data.odbc.odbctype.varchar,20);
 cmd.parameters.add(parm);
 parm=new system.data.odbc.odbcparameter("tmp_v_start",system.data.odbc.odbctype.varchar,20);
 cmd.parameters.add(parm);

parm=new system.data.odbc.odbcparameter("tmp_v_end",system.data.odbc.odbctype.varchar,20);
cmd.parameters.add(parm);
parm=new system.data.odbc.odbcparameter("v_ip",system.data.odbc.odbctype.varchar,50);
cmd.parameters.add(parm);

cmd.parameters["v_baseno"].value= (dropdownlist1.selecteditem.value);
cmd.parameters["tmp_v_start"].value= startdate;
cmd.parameters["tmp_v_end"].value=enddate;
cmd.parameters["v_ip"].value= request.userhostname;

cmd.executenonquery();
      

只能使用这种参数化方法:

cmd = con.createcommand();

cmd.commandtext = "{ call reportplan(?,?,?,?)}";

odbcparameter p1 = cmd.createparameter();
p1.value =dropdownlist1.selecteditem.value;
p1.odbctype = odbctype.varchar;
cmd.parameters.add(p1);

odbcparameter p2 = cmd.createparameter();
p2.value =startdate;
p2.odbctype = odbctype.varchar;
cmd.parameters.add(p2);

odbcparameter p3 = cmd.createparameter();
p3.value =enddate;
p3.odbctype = odbctype.varchar;
cmd.parameters.add(p3);


odbcparameter p4 = cmd.createparameter();
p4.value =request.userhostname;
p4.odbctype = odbctype.varchar;
cmd.parameters.add(p4)

cmd.executenonquery();

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表