【问题标题】:How do I edit MS Access database using Java (NetBeans)如何使用 Java (NetBeans) 编辑 MS Access 数据库
【发布时间】:2013-02-22 18:09:26
【问题描述】:

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

导入 java.sql.*; 公共类 NewMain {

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

代码运行没有错误,并返回“已添加行”消息。问题是当我返回查看数据库时,更改尚未生效。我已经尝试使用删除数据的代码进行此操作,但也没有效果。有没有人遇到过这个问题并且知道如何解决?

我正在运行 Windows 7 64 位、Microsoft Office 64 位以及所有 64 位驱动程序,我无法通过网络搜索找到任何提及此问题的信息。

在此先感谢您的帮助 =)

【问题讨论】:

  • 在executeUpdate()语句后打印i检查添加了多少行

标签: java database ms-access prepared-statement


【解决方案1】:

首先你没有关闭连接,所以这是一个问题。还将您的代码更改为:

   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 中看到数据了。

阅读此处以了解有关Closing and Releasing JDBC resources 最佳实践的更多信息

【讨论】:

  • 无论如何它都会自动提交,同意吗?
  • @SudhanshuUmalkar,是的,但是对于 MS-Access,手动提交总是更好
猜你喜欢
  • 1970-01-01
  • 2018-06-02
  • 1970-01-01
  • 1970-01-01
  • 2011-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多