0

我有2个问题。

  1. 下面的 INSERT 查询不会在 msAccess 数据库中插入记录。有人可以解释为什么会发生这种情况以及我该如何解决?我用双引号替换了单引号,但这也无济于事。

  2. 在下面的这段代码中,只执行了 1 个查询,第一个,其余的都被跳过。我每次都必须注释以前的​​查询并重新编译以执行下一个查询。还有另一种方法吗?

    try {
       Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
       Connection conn=null;
       conn= DriverManager.getConnection("jdbc:odbc:SS");
       Statement s;
       s=conn.createStatement();
       ResultSet rs;
       rs=s.executeQuery("drop table users");
       rs=s.executeQuery("CREATE TABLE users ( id AUTOINCREMENT, username varchar(255) , pass varchar(255), PRIMARY KEY(id) ) ");
       rs=s.executeQuery(" insert into users (username, pass) values( 'name1', 'pass1') ");
       rs=s.executeQuery(" insert into users (username, pass) values( 'name2', 'pass2') ");
    } catch (SQLException ex) { 
       ex.printStackTrace(); 
    } catch(Exception ee) {
       ee.printStackTrace();
    }
    
4

2 回答 2

1

不涉及 ResultSet,因为您不进行任何查询,您应该只执行更新。如果您像这样更改代码,您的程序应该可以工作:

Connection conn=null;
Statement s=null;
try {
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    conn = DriverManager.getConnection("jdbc:odbc:SS");
    s = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
    s.executeUpdate("drop table users");
    s.executeUpdate("CREATE TABLE users ( id AUTOINCREMENT, username varchar(255) , pass varchar(255), PRIMARY KEY(id) ) ");
    s.executeUpdate("insert into users (username, pass) values( 'name1', 'pass1') ");
    s.executeUpdate("insert into users (username, pass) values( 'name2', 'pass2') ");
} catch (SQLException ex) {
    ex.printStackTrace();
} catch (Exception ee) {
    ee.printStackTrace();
} finally {
    try {
        conn.close();
        s.close();
    } catch (SQLException ex) {
        ex.printStackTrace();
    }
}

请注意,为了插入数据库表,您应该创建传递适当参数的语句。

另一个重要的一点是,您应该始终在完成后关闭 Connection、Statement 和 ResultSet。当您关闭连接时,第二个插入将被刷新到数据库表中。

于 2013-03-04T09:30:07.877 回答
0

对于第一个问题,您应该使用executeUpdate更改数据库的语句,以及executeQuery从数据库中检索数据的时间。

对于第二个,您应该创建多个语句,并且不要为您尝试执行的每个查询使用相同的语句。您还应该正确关闭每个语句/连接。

于 2013-03-04T09:12:48.980 回答