繁体   English   中英

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

[英]how to insert value in ms access using java

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

始终使用参数化的SQL,而不是将值直接插入SQL中-这样可以保护您免受SQL注入攻击,转换错误和难以阅读的代码的侵害。

使用try-with-resources语句(如我所知)自动关闭该语句和块末尾的连接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM