我想做一个简单的测试jdbc连接的问题,连接成功后,插入数据总是不成功,但是没有语法错误,系统也不提示错误,我断点测试了下,发现程序运行到pstm=con.prepareStatement(sql);这一行之后就不再走了,测试单元的绿条也不走,这时为什么,代码没什么错误啊,哪位大神告诉我?
public void insertData(Student stu) {
int num=0;//返回影响的行数
this.openCon();
//String sql="insert into student select "+stu.getSno()+",'"+stu.getName()+"'," +
//""+stu.getAge()+",'"+stu.getSno()+"' from dual";
//String sql="insert into student select "+stu.getSno()+",'"+stu.getName()+"',"+stu.getAge()+",'"+stu.getSex()+"from dual";
String sql="insert into student values("+stu.getSno()+",'"+stu.getName()+"',"+stu.getAge()+",'"+stu.getSex()+"')";
try {
pstm=con.prepareStatement(sql);
num=pstm.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
System.out.println(num+"行已插入");
}
测试单元
@Test
public void testInsert(){
dao.insertData(new Student(1001,"博智星",21,"男"));
}
连接数据库
public void openCon() {
//2句话完成操作
try {
//1.加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//2.创建连接
con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","scott","123456");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
刚才一直又在测试,我把insertData的返回类型改为int 就可以操作了,真的好奇怪!
然后又把int改为void,也可以操作了,天啊!
这是为什么,我有点不能接受了!
环境的问题吧,代码是没有问题的,在别人的机器上试验一下吧