【问题标题】:can't get parameter with a value of integer in SQL query在 SQL 查询中无法获取值为整数的参数
【发布时间】:2016-06-24 04:52:07
【问题描述】:

我正在尝试使用此方法在我的 SQL 查询中获取整数(年龄信息)

// ...
Integer age = 42;

String sql = "insert into user_info value('" + username + "','" + passcode + "','" + gender + "',age,'" + email + "')";

try {
    PreparedStatement preparedStatement = con.prepareStatement(sql);
} catch (SQLException e) {
    e.printStackTrace();
}
try {
    i = stmt.executeUpdate(sql);
} catch (SQLException e) {
    e.printStackTrace();
}

最后我得到了成功插入所有信息的结果,用户名,密码,性别和电子邮件,但是对于 AGE 信息,它只在我的 mysql 数据库表中显示为 NULL,我已经非常努力地解决了这个问题,但仍然很困惑,请帮帮我,谢谢:)

【问题讨论】:

  • SQL Injection alert!!!! NEVER 使用简单的字符串连接将用户提供的文本插入到 SQL 语句中。使用 PreparedStatement 和语句标记。
  • 我觉得你贴错了代码,因为isLogin()方法肯定不会更新数据库,和age没有任何关系。
  • 我看到了您的 Select 查询,但请将您的插入查询添加到您的问题中
  • 不相关的标题,请先更改标题,然后与我们分享您的创建查询和/或您遇到的任何错误!

标签: java jdbc


【解决方案1】:

你的 sql 查询出错了

String sql = "insert into user_info value('" + username + "','" + passcode + "','" + gender + "',age,'" + email + "')";

这不会插入年龄值,所以年龄将被设置为他的默认值(NULL)

试试这个查询

String sql = "insert into user_info value('" + username + "','" + passcode + "','" + gender + "','" + age + "','" + email + "')";

【讨论】:

  • @Eric Hoo - 你的查询改变了,你还有问题吗?
【解决方案2】:

先更正你的代码,然后再尝试。

gender + "'," + age + ",'" + email

其次,您没有以正确的方式使用 PreparedStatement。在 PreparedStatement 中,您设置动态值并像这样连接 SQL。检查这个https://docs.oracle.com/javase/7/docs/api/java/sql/PreparedStatement.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-14
    • 2021-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多