如何使用java在ms access中插入值
由此产生的错误是:如何使用java在ms access中插入值,java,database,ms-access,user-interface,sqlexception,Java,Database,Ms Access,User Interface,Sqlexception,由此产生的错误是: 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("Conn
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).
您正在对非查询的内容调用
executeQuery
。但是,您不应该使用相同的SQL调用execute
,而应该使用PreparedStatement
:
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)*/
始终使用参数化SQL,而不是将值直接插入SQL,这样可以防止SQL注入攻击、转换错误和难以读取的代码
使用try with resources语句(正如我所做的那样)自动关闭块末尾的语句和连接。错误是。。。?(您应该始终包含错误消息的详细信息。)此外,使用参数化SQL而不是将值直接放入SQL。。。请以后更仔细地格式化你的文章,用空格代替标签。
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();
}