簡體   English   中英

我無法將記錄插入到在oracle數據庫中創建的表中。 我在做什么錯?

[英]I am unable to insert a record into my table created in oracle database. What mistake am I doing?

    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設置了類路徑。 我在做什么錯E? 還有其他我應該復制和粘貼的文件嗎? 我只是一個初學者,請幫忙。 以及我在Editplus中的程序如何將更新直接定向到用SQL創建的表中。 它走什么路?

Oracle默認將自動提交設置為false。 從Oracle Sql Developer(或代碼)將autocommit設置為true或從代碼提交更改:

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

或者,如果您想要設置為自動提交:

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

嘗試通過調用conn.commit();提交Record 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();
}
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();
}

您的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. 多次運行該程序,以檢查是否遇到主鍵沖突異常。 這將告訴您程序是否正在插入您未查看的表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM