在Java中使用preparedStatements向MySQL数据库发送数据的正确方法是什么?
我想将字符串“格列佛之旅”从java应用程序发送到sql数据库。我尝试使用preparedStatements,但失败了。我该怎么做? 这是我的密码在Java中使用preparedStatements向MySQL数据库发送数据的正确方法是什么?,java,mysql,jdbc,prepared-statement,Java,Mysql,Jdbc,Prepared Statement,我想将字符串“格列佛之旅”从java应用程序发送到sql数据库。我尝试使用preparedStatements,但失败了。我该怎么做? 这是我的密码 private int setData(Connection conn,Object[] data){ String sql = "INSERT INTO book VALUES(?,?)"; PreparedStatement prepStm = conn.prepareStatement(sql); prepStm
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语法错误。无法将名称字段添加到数据库如果实际数据库表中的列类型是VARCHAR,则使用
prepStm.setString(1,"Gulliver's Travels");
而不是
prepStm.setObject(1,"Gulliver's Travels");
按照本教程学习有关PreparedStatement及其用法的更多信息
试试这个
这是更新后的问题
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();
}
设置对象不是你应该做的事情。当您知道输入的数据类型以及数据库列的数据类型时,请使用正确的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();
}
《代码》一书中有哪些栏目?它们是什么类型?bookName-VARCHAR bookPrice-VARCHAR给出了一个SQL语法错误。bookName列未填充。请不要忘记关闭
PreparedStatement
。请稍候。我试试看。。顺便问一下,有人能告诉我为什么我的问题被否决了吗?@isuru buddhika通过提供更多信息来改进你的问题。查看你问题中的评论。许多用户想要更多详细信息感谢你指出。实际上,我没想到表列会成为问题。顺便问一下,为什么我不能使用prepStm.setObject?@isuru buddhika table columns也很重要,因为当您使用命令行插入时,您将insert写入tablename值(1,'string')意味着如果该列是varchar,那么您将在“”中传递。您在JDBC中必须执行的相同操作我现在就知道了。所以,如果我使用setObject,它想正常工作,是这样吗?