我希望将字符串“Gulliver's Travels”从java应用程序发送到sql数据库。我尝试使用preparedStatements但失败了。我怎样才能做到这一点? 这是我的代码。
private int setData(Connection conn,Object[] data){
String sql = "INSERT INTO book VALUES(?,?)";
PreparedStatement prepStm = conn.prepareStatement(sql);
prepStm.setObject(1,data[0]);
prepStm.setObject(2,data[1]);
return prepStm.executeUpdate();
}
表格列:
bookName : VARCHAR
bookPrice : INT
错误: SQL语法错误。无法将名称字段添加到数据库
答案 0 :(得分:1)
如果您的列类型在实际数据库表中是VARCHAR,请使用
prepStm.setString(1,"Gulliver's Travels");
而不是
prepStm.setObject(1,"Gulliver's Travels");
按照本教程了解有关PreparedStatement及其用法的更多信息。
http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html
答案 1 :(得分:0)
试试这个 这是针对更新的问题
private int setData(Connection conn,Object[] data){
String sql = "INSERT INTO book VALUES(?,?)";
PreparedStatement prepStm = conn.prepareStatement(sql);
prepStm.setString(1,"Gulliver's Travels");
prepStm.setInt(2,200);
return prepStm.executeUpdate();
}
答案 2 :(得分:0)
设置对象不是你应该做的。当您知道输入的数据类型以及数据库列的数据类型时,请使用正确的setter方法。
private int setData(Connection conn,Object[] data){
String sql = "INSERT INTO book VALUES(?,?)";
PreparedStatement prepStm = conn.prepareStatement(sql);
prepStm.setString(1,"Gulliver's Travels");
prepStm.setFloat(2,200.00);
return prepStm.executeUpdate();
}