Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Java(NetBeans)编辑MS Access数据库_Java_Database_Ms Access_Prepared Statement - Fatal编程技术网

如何使用Java(NetBeans)编辑MS Access数据库

如何使用Java(NetBeans)编辑MS Access数据库,java,database,ms-access,prepared-statement,Java,Database,Ms Access,Prepared Statement,我正在尝试使用一些Java代码(运行NetBeans 7.2.1)编辑MS Access数据库。我设置了数据源,并使用ODBC工具将其链接到我的数据库ProjectDatabase,并将数据源命名为DB,然后运行以下代码: 导入java.sql.*; 公共类纽曼{ public static void main(String[] args) { try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connec

我正在尝试使用一些Java代码(运行NetBeans 7.2.1)编辑MS Access数据库。我设置了数据源,并使用ODBC工具将其链接到我的数据库ProjectDatabase,并将数据源命名为DB,然后运行以下代码:

导入java.sql.*; 公共类纽曼{

public static void main(String[] args) {
    try{
       Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
       Connection con = DriverManager.getConnection("jdbc:odbc:DB");
       Statement st=con.createStatement();
       String name="roseindia";
       String address="delhi";
       int i=st.executeUpdate("insert into user(name,address)      values('"+name+"','"+address+"')");
       System.out.println("Row is added");
       }
    catch(Exception e){
        System.out.println(e);
    }
}
} 
代码运行时没有错误,并返回“Row is added”(行已添加)消息。问题是,当我返回查看数据库时,更改没有生效。我用一个用于删除数据的代码尝试了此操作,但也没有效果。有人遇到过此问题并知道如何解决它吗

我运行的是64位Windows 7、64位Microsoft Office和所有64位驱动程序,我在网络搜索中找不到任何关于这个问题的信息


提前感谢您的帮助=)

首先,您没有关闭连接,因此这是一个问题。请将代码更改为:

   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
   Connection con = DriverManager.getConnection("jdbc:odbc:DB");
   Statement st=con.createStatement();
   con.setAutoCommit(false); //Notice change here
   String name="roseindia";
   String address="delhi";
   int i=st.executeUpdate("insert into user(name,address)      values('"+name+"','"+address+"')");
   con.commit(); //Notice change here
   System.out.println("Row is added");
   con.close(); //Notice change here
这将把更改提交给access数据库,所以现在您应该能够在MS access中看到数据


阅读此处以了解有关

的最佳实践的更多信息检查在executeUpdate()语句之后通过打印i添加了多少行它仍将自动提交,是否同意?@SudhanshuUmalkar,是的,但对于MS Access,手动提交总是更好