如何使用java在ms访问中插入值


try 
{
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    con1=DriverManager.getConnection("jdbc:odbc:MyDatabase");
    st1=con1.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
    System.out.println("Connect database in BallMoves1.java .......");
    /*the below line giving error*/
    rs1 = st1.executeQuery("insert into highscore" + " (score) " + "values('"+score+"')");
    System.out.println("Score is inserted..");
    System.out.println("Score......."+score);
}catch(Exception e){ e.printStackTrace();}
/*highscore is table and attributes of table are (sid,score).

由此产生的错误是:

Connect database in BallMoves1.java .......
java.sql.SQLException: No ResultSet was produced
    at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:258)
    at BallMoves1.move(BallMoves1.java:378)
    at BallMoves1.run(BallMoves1.java:223)
    at java.lang.Thread.run(Thread.java:744)*/

您对不是查询的内容调用executeQuery。但是,您不应该使用相同的SQL调用execute,而应该使用PreparedStatement:

String sql = "insert into highscore (score) values (?)";
try (Connection conn = DriverManager.getConnection("jdbc:odbc:MyDatabase");
    PreparedStatement statement = conn.prepareStatement(sql)) {
  statement.setInt(1, score);
  statement.executeUpdate();
  conn.commit();
}

Always使用参数化SQL,而不是将值直接插入SQL中,这样可以保护您免受SQL注入攻击、转换错误和难以读取的代码的影响。

使用try-with-resources语句(正如我所做的那样(自动关闭块末尾的语句和连接。

相关内容

  • 没有找到相关文章

最新更新