下面的调用存储过程,执行的时候程序停留了,怎么好像让我输入?哪儿错了,不会,刚学,谢谢import java.sql.*;public class Testpro1 { public static void main(String[] args) {
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:myora1", "scott", "tiger");
CallableStatement c = conn.prepareCall("{call my_sp1(?,?)}");
c.setString(1, "SCOTT");
c.setInt(2, 3000);
c.execute();
c.close();
conn.close();
}catch(ClassNotFoundException e){
e.printStackTrace();
}catch(SQLException e){
e.printStackTrace();
}
}
}
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:myora1", "scott", "tiger");
CallableStatement c = conn.prepareCall("{call my_sp1(?,?)}");
c.setString(1, "SCOTT");
c.setInt(2, 3000);
c.execute();
c.close();
conn.close();
}catch(ClassNotFoundException e){
e.printStackTrace();
}catch(SQLException e){
e.printStackTrace();
}
}
}
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:myora1","scott","tiger");
Statement s = conn.createStatement();
ResultSet rs = s.executeQuery("select * from emp");
while(rs.next()){
String str = rs.getString("ename");
System.out.println(str);
}
rs.close();
s.close();
conn.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
这个能访问到数据库,并输出:
SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMS
JAMES
FORD
MILLER咋回事?
然后自己分析下。
import java.sql.*;public class Testproc { public static void main(String[] args) {
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:myora1", "scott", "tiger");
CallableStatement c = conn.prepareCall("{call my_sp1(?,?)}");
System.out.println("1");
c.setString(1, "SCOTT");
System.out.println("2");
c.setInt(2, 3000);
System.out.println("3");
c.execute();//到这句停下来了,不知道怎么回事?
System.out.println("4");
c.close();
System.out.println("5");
conn.close();
}catch(ClassNotFoundException e){
e.printStackTrace();
}catch(SQLException e){
e.printStackTrace();
}
}
}
存储过程里面的dml语句都要手动commit吗?create or replace procedure my_sp1(v_ename varchar2,v_sal number) is
begin
update pme set sal=v_sal where ename=v_ename;
commit; --这里起初没commit
end;