-2

我想将字符串“格列佛游记”从 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 语法错误。将名称字段添加到数据库失败

4

3 回答 3

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

于 2013-08-27T05:08:39.713 回答
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();
}
于 2013-08-27T05:09:14.333 回答
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();
}
于 2013-08-27T05:19:11.527 回答