例如,我的陈述如下:
dbConnection.update("insert into transaction (isrecovered) values(?)", new Object[]{"N"});
在上述陈述中,为什么我们不能将“N”作为“N”?
答案 0 :(得分:2)
在Java中,字符串用双引号括起来。
Java char
用单引号括起来。
String
是Object
(它是一个子类),数组必须包含对象。 char
是基元而不是Object
。
请勿将上述(仅涉及Java语法)与数据表中的任何列混淆。您可能具有CHAR或VARCHAR类型的列。这是数据库指定存储内容的方式。
此外,不要将上述内容与包含SQL语句的Java String
的内容混淆。 SQL是一种与Java不同的语言,它使用不同的约定。不同的DataBase引擎使用单引号或双引号来包围SQL中的字符串常量。另外,它取决于所选的选项。除非您的特定数据库及其设置意味着您不使用单引号,否则典型的常识建议会使用单引号。
答案 1 :(得分:1)
此语句中混合了 2种语言( SQL和Java ),每种语言都有不同的语法。
有些语言接受带有单引号的String(如PHP和SQL),有些则不接受(如Java)。
我建议您使用更安全的解决方案,例如PreparedStatement
,您可以调用.setChar(...)
答案 2 :(得分:0)
您的update方法接受String参数,并且字符串在Java中用双引号括起来,而不是单引号。 对于新的Object [] {“N”}事物,这里“N”也是一个String对象,你仍然可以将'N'传递给一个对象数组,因为它们会被自动装入字符对象。