Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.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 Ms Access中的数据插入问题_Java_Ms Access_Jdbc - Fatal编程技术网

Java Ms Access中的数据插入问题

Java Ms Access中的数据插入问题,java,ms-access,jdbc,Java,Ms Access,Jdbc,这是在d MS Access数据库中插入数据的代码。数据库是d数据库的名称。 但我无法在其中插入数据。查询已成功运行,但未在数据库中添加数据。 我不知道你。。? 如果查询发生更改,代码将在数据库中成功创建表 有谁能告诉我出了什么问题或者我哪里错了 谢谢您首先修改getConnection方法中的catch语句,看看是否有错误 import java.sql.*; public class NewConnection{ private static Connection con;

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

有谁能告诉我出了什么问题或者我哪里错了

谢谢您

首先修改getConnection方法中的catch语句,看看是否有错误

 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));
   }
}
永远不要这样做

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();
  }
}
首先,您正在捕获所有不应该捕获的内容—NullPointerException、ArrayIndexOutOfBoundsException等指示代码中存在错误的内容

只捕捉编译器告诉您必须做的事情,除非您有很好的理由这样做


其次,如果抛出任何异常,您将永远不会知道,因为您什么也不做。至少要进行e.printStackTrace或记录,以便查看出了什么问题。

您是否确实提交了事务?与java.sql.Connection.commit中一样,在将insert语句发送到db之后?理论上,它应该设置为自动提交,您可以通过查询java.sql.Connection.getAutoCommit来检查它

catch (Exception e) 
{
}
另外,这一点非常重要:不要对连接、语句和查询对象使用静态,因为它们可以并且将被新连接的其他实例覆盖。使用这种架构,您必须绝对确保NewConnection是单例的,或者在Parallel中使用的对象不会超过一个,并且每次重用时都会重置这些对象


单独运行查询以检查是否插入!执行过程中有任何异常吗?请运行拼写检查程序。我几乎不能把你当回事。那是我的第一个想法。然而,如果这不起作用,他会得到一个NPE。事实上,我不是java高手。所以,我会得到这些问题。bdw than for fd。永远不要这样做!捕获异常{}首先,您正在捕获所有不应该捕获的内容—NullPointerException、ArrayIndexOutOfBoundsException等指示代码中存在错误的内容。只捕捉编译器告诉您必须做的事情,除非您有很好的理由这样做。其次,如果抛出任何异常,您将永远不会知道,因为您什么也不做。至少要做e.printStackTrace或记录,这样你就可以看到哪里出了问题。。我已经改为SQLEXception,ClassNotFoundException,但仍然没有效果。这可能表明没有找到驱动程序ClassNotFoundException。确保带有驱动程序的JAR文件在您的类路径上。我使用的是netbeans ide…所以第一次出现这个问题..这就是我不知道这里的根本原因…thanxin项目属性鼠标右键单击项目有一个库部分。将带有驱动程序的JAR文件添加到该部分。你能告诉我在哪里找到了AT驱动程序吗..我安装了accessdriverengine.exe
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;
    }