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中创建的表。它遵循什么样的路径?
答案 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是否可能引用不同的架构?我建议做以下
con.commit();
放在之间
int res=st.executeUpdate("insert into A1 values('1','tomato','10')");
和
System.out.println(res+"record is inserted..");