oracle更新表没有抛出出异常,但表中数据没有改变!求高人指点啊!!!
本帖最后由 yuanye348623610 于 2013-03-23 12:38:55 编辑 oracle更新表没有抛出出异常,但表中数据没有改变!
Java 代码:
@Test
public void testUpdateTea()
{
Connection conn = ConnectionFactory.getConnection();
String sql = "update teacher "+"set tName=?,tTel=? "+"where tid=?";
try
{
conn.setAutoCommit(false);
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "唐三藏");
pstmt.setString(2, "010000");
pstmt.setString(3, "2013100");
pstmt.execute();
conn.commit();
JdbcUtil.close(pstmt, conn);
} catch (SQLException e)
{
e.printStackTrace();
}
}
/* ConnectionFactory和JdbcUtil是我自己写的两个工具类,经测试没问题 */
teacher表:
CREATE TABLE "TEACHER"(
"TID" CHAR(8),
"TNAME" VARCHAR2(30) NOT NULL ENABLE,
"TSEX" CHAR(4),
"TTEL" CHAR(13),
FOREIGN KEY ("TID") REFERENCES "USERS" ("USERID") ON DELETE CASCADE ENABLE
);
通过命令提示行,连接oracle数据库后执行:update teacher set tName="唐三藏",tTel="010000" where tid="2013100"; 是没问题的,能够成功更新数据!
另外,我通过如下代码:
public Boolean updateStu(Student stu)
{
conn = ConnectionFactory.getConnection();
String sql = "update student " + " set sName =? , sAge =? "+ " where sid = ?";
try
{
conn.setAutoCommit(false);
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, stu.getsName());
pstmt.setString(2, stu.getsAge());
pstmt.setString(3, stu.getsId());
pstmt.executeUpdate();
conn.commit();
JdbcUtil.close(pstmt, conn);
return true;
} catch (SQLException e)
{
try
{
conn.rollback();
} catch (SQLException e1)
{
e1.printStackTrace();
}
e.printStackTrace();
return false;
}
}
student表:
CREATE TABLE "STUDENT"(
"SID" CHAR(8),
"SNAME" VARCHAR2(30) NOT NULL ENABLE,
"SSEX" CHAR(4),
"SAGE" VARCHAR2(3),
FOREIGN KEY ("SID") REFERENCES "USERS" ("USERID") ON DELETE CASCADE ENABLE
);
是能够成功更新student表中的数据的呀!!
但通过前面的java代码却为什么就无法更新teacher表呢,却也不报任何异常!!!???这是为什么呢???
望高人指点啊!!! oracle update 数据 没有改变 jdbc
[解决办法]
pstmt.setString(3, "2013100 ");
[解决办法]
pstmt.setString(3, "2013100");用日本话说是问题大大的有,
换成
pstmt.setInt(3, 2013100);
[解决办法]
这个是一个jdbc直连数据库的程序,LZ在学习的吧?
