Ms Access中的数据插入问题

时间:2009-12-26 09:56:11

标签: java ms-access jdbc

 import java.sql.*;

   public class NewConnection{   private static Connection con;
   private static ResultSet rs;
   private static Statement sm;
   private static final String DRIVER = "sun.jdbc.odbc.JdbcOdbcDriver";
   private static final String URL = "jdbc:odbc:Driver={Microsoft Access driver (*.mdb)};DBQ=E:\\Database.mdb;";
   private static String query;
   int i;
  private void getConnection(){

    try {
        Class.forName(DRIVER);
        System.out.println("Driver Connected");
        con=DriverManager.getConnection(URL);
        System.out.println("Database Connected");
        sm=con.createStatement();

         }  catch (Exception e) {
     }

    }

   private int ExecuteUpdate(String query1)
   {

    try {
        System.out.println(query1);
          i=sm.executeUpdate(query1);
        } catch (Exception e) {
          e.printStackTrace();
        }

        return i;
    }



     public static void main(String []args){
     NewConnection n= new NewConnection();
     n.getConnection();
         query="insert into Emp values('samr','sam','sa','aas')";
         System.out.println(n.ExecuteUpdate(query));
   }
}

这是在MS Access Database中插入数据的代码.Databse是d数据库的名称。 但是我无法在其中插入数据。查询成功运行但不在数据库中添加数据。 不知道你..? 如果查询更改,代码将成功在数据库中创建表。

任何人都可以告诉我这是什么问题或我错在哪里..

谢谢

3 个答案:

答案 0 :(得分:0)

在getConnection()方法中修改catch语句,先执行此操作,看看是否有任何错误

private void getConnection(){
  try {
    Class.forName(DRIVER);
    System.out.println("Driver Connected");
    con=DriverManager.getConnection(URL);
    System.out.println("Database Connected");
    sm=con.createStatement();
  }  catch (Exception e) {
     e.printStacktrace();
  }
}

答案 1 :(得分:0)

永远不要这样做!

catch (Exception e) 
{
}

首先,你正在捕捉你不应该捕捉的各种东西 - NullPointerException,ArrayIndexOutOfBoundsException等... - 表示代码中存在错误的东西。

只捕捉编译器告诉你的必须,除非你有充分的理由。

其次,如果有任何异常被抛出,你永远不会知道,因为你什么都不做。至少做“e.printStackTrace()”或记录它,这样你就可以看出出了什么问题。

答案 2 :(得分:0)

你真的提交了交易吗?将insert语句发送到db后,如在java.sql.Connection.commit()中?它理论上应该设置为“auto-commit”,你可以通过查询java.sql.Connection.getAutoCommit()来检查它。

private int ExecuteUpdate(String query1)
   {

    try {
        System.out.println(query1);
          i=sm.executeUpdate(query1);
          con.commit();                //try to commit the query
        } catch (Exception e) {
          e.printStackTrace();
        }
        return i;
    }

此外,非常重要:不要对Connection,Statement和Query 对象使用静态,因为它们可以并且将被NewConnection的其他实例覆盖。使用这种架构,你必须绝对确保NewConnection是一个Singleton,或者在并行使用这些对象中的任何一个(并且每次重用它们时都会重置)。

Check here for more info on java.sql.Connection