java和ms访问插入sql不起作用

时间:2013-03-04 08:00:04

标签: java ms-access

我有两个问题。

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

2 个答案:

答案 0 :(得分: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。关闭Connection时,第二个插入将刷新到数据库表。

答案 1 :(得分:0)

对于第一个问题,您应该使用executeUpdate来更改数据库,并使用executeQuery来检索数据库中的数据。

对于第二个,您应该创建多个语句,而不是对您尝试执行的每个查询使用相同的语句。你也应该正确关闭每个语句/连接。