Java Ms Access中的数据插入问题
这是在d MS Access数据库中插入数据的代码。数据库是d数据库的名称。 但我无法在其中插入数据。查询已成功运行,但未在数据库中添加数据。 我不知道你。。? 如果查询发生更改,代码将在数据库中成功创建表 有谁能告诉我出了什么问题或者我哪里错了 谢谢您首先修改getConnection方法中的catch语句,看看是否有错误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;
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;
}