0
    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 创建的表中。它遵循什么路径?

4

3 回答 3

4

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

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

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

//after creating Connection
conn.setAutoCommit(true);
于 2013-06-25T13:01:00.260 回答
0

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

另请参阅为什么执行更新说,插入查询更新了一行

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();
}

于 2013-06-25T13:09:57.487 回答
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. 多次运行该程序以检查您是否收到主键违规异常。这将告诉您您的程序是否正在插入您未查看的表中。
于 2013-06-25T13:22:18.993 回答