将带斜杠的String插入Mysql

时间:2012-03-15 18:41:35

标签: java mysql

实际上我只是尝试将类似 30/01/2012 的字符串插入到表中,其中该特定表列的类型为varchar。插入后,此值将更改为 0.008946322067594433 。这种行为可能是什么原因?请让我知道我在这里做错了什么。我在数据库/ SQL概念方面很差。

1 个答案:

答案 0 :(得分:3)

我怀疑你的SQL看起来像:

INSERT INTO MYTABLE (X) VALUES (30/01/2012)

在这种情况下,它不会将其视为字符串,而是要评估的表达式 - 然后将其转换为字符串。如果是这种情况,听起来你正在构建包含值的SQL字符串,例如

String sql = "INSERT INTO ... VALUES (" + value + ")";

不要这样做。使用PreparedStatement并设置参数值。它不仅可以避免这个问题,还可以避免SQL注入攻击,日期和时间的转换问题等等。

(说到这个,假设这个值是一个日期,为什么要将它存储在varchar列中?如果可能的话,让你的列代表你想要存储的数据更自然......)< / p> 编辑:我刚刚下载并安装了MySQL来测试这个......实际上在一个包含单列(Name的表中)这个SQL语句做错了(在MySQL Workbench中):

INSERT INTO `test`.`sandbox` (`Name`) VALUES (30/01/2012);

...但这是正确的事情:

INSERT INTO `test`.`sandbox` (`Name`) VALUES ('30/01/2012');

但是你当然应该使用带参数的预备语句。