gpt4 book ai didi

java sql空字段

转载 作者:行者123 更新时间:2023-11-30 06:35:20 24 4
gpt4 key购买 nike

您好,我正在尝试执行查询

Statement stmt = conn.createStatement();
stmt.executeUpdate(location_query);

location_query 是

insert into table(col, col2) value("2", "");

col 和 col2 都是 double(12,2) 类型,报错第 1 行“col2”列的数据被截断,但如果我打印我的查询并复制并将其粘贴到 PMA (PhpMyAdmin),它是正确的。

我猜它是因为 col2 的值为空,但是是否有机会以其他方式解决这个问题,而不是检查我试图放入查询中的所有变量??

最佳答案

好吧,一个空字符串不是一个有效的数字,因此不同的数据库系统可能会以不同的方式处理它。当您只希望该列为 NULL 或填充默认值时,您应该像这样将其保留:

insert into table(col) value(2);

或显式设置为 NULL:

insert into table(col, col2) value(2, NULL);

此外,SQL 中数字是不带引号的。此外,您应该考虑使用 PreparedStatements仅有的。 PreparedStatements 让您可以安全地输入并防止 SQL 注入(inject),并且在重复使用时可能会更快。

看看google "statement vs. preparedstatement"

编辑

当使用准备好的语句时,您的示例看起来像这样:

String yourFirstString = "2.34";
String yourSecondString = "";

double yourFirstDouble = 0;
double yourSecondDouble = 0;

if(yourFirstString != null && yourFirstString.trim().length() > 0){
try {
yourFirstDouble = Double.parseDouble(yourFirstString);
}catch(NumberFormatException e){
// handle Exception here
}
}

// same parsing for the second double

PreparedStatement stmt = conn.prepareStatement("insert into table (col, col2) value(?, ?)");
stmt.setDouble(1, yourFirstDouble);
stmt.setDouble(2, yourSecondDouble);
stmt.executeUpdate();

关于java sql空字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6199137/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com