日期:2014-05-17  浏览次数:21075 次

jdbc更新oracle数据库后,数据库中的记录没变
jdbc更新oracle数据库后,数据库中的记录没变

今天在写一个小程序时,通过jdbc更新oracle数据库中的一个表时,程序没抛异常,但更新后数据库中的值就是不变!

然后,写了个测试程序,结果更奇怪。

我先创建了一个基本表a:
create table a(
aId varchar2(10) ,
aName varchar2(10)
);

插入了一条记录:
insert into a values('001','yaan');

然后通过下面的测试程序更新a表中的记录,
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import org.junit.Test;

public class UpdateTest
{
Connection conn;
PreparedStatement pstmt;
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@localhost:1521:xe";

String user = "updatetest";
String password = "123";

@Test
public void testUpdate()
{
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, user, password);
String sql = "update a set aname=?  where aid=?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,  "基地");
pstmt.setString(2, "001" );
pstmt.executeUpdate();
conn.commit();
pstmt.close();
conn.close();
} catch (ClassNotFoundException e)
{
e.printStackTrace();
} catch (SQLException e) 
{
e.printStackTrace();
}
     }
}

也能更新a表中的记录。

但是当我创建一个同样结构的b表并插入一条同样的记录后,再通过上面的程序更新b表中的记录时,
却死活更新不了,也不抛任何异常!

表b:
create table b(
aId varchar2(10) ,
aName varchar2(10)
);
insert into b values('001','yaan');

我用的数据库是orale10g,测试时,我在oracle中创建了一个用户,
并赋了如下权限:
CREATE PROCEDURE
CREATE ROLE CREATE SEQUENCE
CREATE TABLE CREATE TRIGGER
CREATE VIEW

为什么有的表能更新,有却不能呢?
数据库 Oracle JDBC

------解决方案--------------------
表示,,正常
------解决方案--------------------
把语句拿出来放到 SQLPLUS工具里执行看看