public boolean callProcedure3(Vector v){
boolean ret = false;
CallableStatement cstmt = null;
try {
if (this.con == null) {
this.con = DBManager.getCon();
}
String sql = "{call sub_service_3(?)}";
cstmt = this.con.prepareCall(sql);
cstmt.setString(1, (String)v.get(0));
ret = cstmt.execute();
} catch (SQLException e) {
ret = false;
e.printStackTrace();
}
return ret;
}
就这么简单,存储过程独立运行没问题、数据类型也没问题。但在JAVA函数中调用就返回false。已经改成最简单的Insert语句测试了,还是没反应。Vector中也有数据。
请各位帮忙看下。谢谢
boolean ret = false;
CallableStatement cstmt = null;
try {
if (this.con == null) {
this.con = DBManager.getCon();
}
String sql = "{call sub_service_3(?)}";
cstmt = this.con.prepareCall(sql);
cstmt.setString(1, (String)v.get(0));
ret = cstmt.execute();
} catch (SQLException e) {
ret = false;
e.printStackTrace();
}
return ret;
}
就这么简单,存储过程独立运行没问题、数据类型也没问题。但在JAVA函数中调用就返回false。已经改成最简单的Insert语句测试了,还是没反应。Vector中也有数据。
请各位帮忙看下。谢谢
解决方案 »
- 如何在一个List找到一个最小的大于数?
- 我想用socket连新浪然后取出输入流的信息为什么不行呢?代码在里面阿
- 如何删除整个Jtree?或者删掉其根结点?
- 如何将字节数组清空?
- sql正确执行,可数据库数据没有变化(解决立马给分)
- 专业DVD压缩软件ZipMedia现在提供下载!
- IE不运行 APPLET !!!!!help me plz!~
- 请问java application怎样把信息直接输出到打印机呢?
- 急:高手相助,关于java的内存问题
- 如何判断鼠标点击的坐标,如是否在(50,50)和(80,80)组成的矩形里。高分
- 想让大家帮忙看个程序
- 如何 data binding with MySQL?
public boolean execute()
throws SQLException
Returns:
true if the first result is a ResultSet object; false if the first result is an update count or there is no result看清楚,如果返回的第一个结果是一个结果集,那么为true,如果是更新数量或者没有结果,则返回false你的insert 是不返回结果集的,当然是false了。 update的更新行数也是false;
如果你调用select的存储过程,返回就是true;
2 确信你调用的是那个存储过程,比如删掉看看。
3 你换一个其它的存储过程看看,比如select/ delete
4 祈祷吧!
import java.sql.*;/*
准备一下
create table test(
col1 varchar(20)
)create procedure sub_service_3
@v varchar(20)
as
insert into test values(@v)
*/
public class TestPr {
private Connection conn = null;
private CallableStatement cstmt = null;
final String DB_URL = "jdbc:sqlserver://localhost:1433;DatabaseName=test";
final String DB_DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
final String DB_USER = "test";
final String DB_PASSWORD = "password";
public TestPr() {
System.setProperty("jdbc.driver",
DB_DRIVER);
System.setProperty("user", DB_USER);
System.setProperty("password", DB_PASSWORD);
} public boolean callProcedure() {
boolean ret = false;
Vector<String> v = new Vector<String>();
String[] s = {"a","b","c"};
for(String tmp:s){
v.add(tmp);
}
try {
Class.forName(System.getProperty("jdbc.driver")); if (this.conn == null) {
this.conn = DriverManager.getConnection(DB_URL, System.getProperties());
}
String sql = "{call sub_service_3(?)}";
cstmt = this.conn.prepareCall(sql);
cstmt.setString(1, v.get(0));
ret = cstmt.execute(); // 如果第一个结果为 ResultSet 对象,则返回 true;如果其为更新计数或者不存在任何结果,则返回 false
} catch (SQLException e) {
ret = false;
e.printStackTrace();
} catch(ClassNotFoundException e){
e.printStackTrace();
} finally{
try {
if(cstmt != null){
cstmt.close();
conn.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
return ret;
} public static void main(String[] args) {
System.out.println(new TestPr().callProcedure());
}
}