日期:2014-05-20  浏览次数:20662 次

[急的如火]java和存储过程的问题!!!急
数据库里面有存储过程。但是JAVA中的用
CallableStatement   cst   =   con.prepareCall( "{call   bao.goucheng(?,?,?)} ");
来调用。而在其中。里面的
bao不确定guocheng也不确定,?几个参数也不确定。
?的类型就更不确定了。那位高人有好的方法在只要写一个方法。
把这些都以参数的方法传进去而且在里面都能判断的出来。
在下只有一点点的思路。望高人指点。。

步骤
1-> 接到参数判断有几个?用String   的方法来判断得到有几个参数
2-> 接到参数得到bao和guocheng名
下面的就有点晕了。

如何判断是什么类型的参数。有输出的还有输入的。
还有判断出来后如何各自声明他们或者赋值。。
请高人指点啊。。。


------解决方案--------------------
con.prepareCall( "{call bao.goucheng(?,?,?)} ");
里面不都是字符串么?
你传参数的时候加进去不就可以了
至于?
就更简单了.直接setValue 方法阿
比如:
public void example(String bao,String guocheng,String value1,String value2...)
{
CallableStatement cst = con.prepareCall( "{call " + bao + ". " + goucheng + "(?,?,?)} ");
cst.setValue(1,value1);
...

}
------解决方案--------------------
CallableStatement cst = con.prepareCall( "{call bao.goucheng(?,?,?)} ");
里面的参数是通过配置文件或者是程序运行得出的东西传进去。
那就把参数弄成Vector
public void example(String bao,String guocheng,Vector vec)
{
CallableStatement cst = con.prepareCall( "{call " + bao + ". " + goucheng + "(?,?,?)} ");
for (int i = 0; i < vec.size(); i++)
{ String str = (String)vec.get(i);
cst.setValue(i,str);
}
...
}