我无法在oracle数据库中创建的表中插入记录。我做错了什么?

时间:2013-06-25 12:58:11

标签: java sql oracle jdbc

    import java.sql.*;
import sun.jdbc.odbc.JdbcOdbcDriver;
class Jdbc1
{
    public static void main(String[] args) throws Exception
    {
        JdbcOdbcDriver jd=new JdbcOdbcDriver();
        DriverManager.registerDriver(jd);
        Connection con=DriverManager.getConnection("jdbc:odbc:sai123","SYSTEM","sai123");
        Statement st=con.createStatement();
        int res=st.executeUpdate("insert into A1 values('1','tomato','10')");
        System.out.println(res+"record is inserted..");
        st.close();
        con.close();
    }
}

我将表创建为:

CREATE TABLE A1(
INO INTEGER NOT NULL,
INAME CHAR(30) NOT NULL,
IPRICE INTEGER NOT NULL
);

当我编译并运行java prog时,它说“插入1条记录..”但是当我在SQLdeveloper中打开我的表时,我没有在表中找到任何更新。他们都是空的! 我还为ojdbc-6.jar设置了类路径。我在做什么错误?是否有其他文件我应该复制和粘贴?我只是一个初学者,请帮助。 我的Editplus程序如何将更新直接指向SQL中创建的表。它遵循什么样的路径?

3 个答案:

答案 0 :(得分:4)

默认情况下,Oracle将自动提交设置为false。从Oracle Sql Developer(或代码)中将autocommit设置为true,或者从代码中提交更改:

//before con.close()
con.commit();

或者如果您想设置为自动提交:

//after creating Connection
conn.setAutoCommit(true);

答案 1 :(得分:0)

尝试通过调用提交记录 conn.commit();

也可以参考Why Execute Update Says, one row updated on insert query

main的最终代码应该是这样的 public static void main(String[] args) throws Exception
{
JdbcOdbcDriver jd=new JdbcOdbcDriver();
DriverManager.registerDriver(jd);
Connection con=DriverManager.getConnection("jdbc:odbc:sai123","SYSTEM","sai123");
Statement st=con.createStatement();
int res=st.executeUpdate("insert into A1 values('1','tomato','10')");
System.out.println(res+"record is inserted..");
con.commit();
st.close();
con.close();
}

答案 2 :(得分:0)

您的Java代码和SQLDeveloper是否可能引用不同的架构?我建议做以下

  1. 将INO作为表格的主键
  2. con.commit();放在之间 int res=st.executeUpdate("insert into A1 values('1','tomato','10')");System.out.println(res+"record is inserted..");
  3. 多次运行程序以检查是否收到主键违规例外。这将告诉您程序是否正在插入您未查看的表格。