如此看来第一个值被视为列,是不是这样?
因为你已经得到它就像SomeString
,而不是作为一个文本值如'SomeString'
。这就是SQL的工作原理 - 这正是普通代码的工作原理。如果您有:
String foo = bar;
你会认为是试图复制一个名为bar
变量的值,不是吗?如果你的意思是一串三个字符,b,a,r,你可以使用:
String foo = "bar";
这在SQL中也是一样的。
然而,假设这SQL正在从实际值建立起来的,你应该使用一个PreparedStatement
带参数反正:
String sql = "INSERT INTO meta (title, hlcount, textcount, imgcount, linkcount)"
+ " VALUES (?, ?, ?, ?, ?)";
PreparedStatement pst = conn.prepareStatement(sql);
pst.setString(1, "SomeString");
pst.setInt(2, 6);
// etc
这样,你会避免SQL注入攻击并串转换的问题(例如,用于日期)。它还可以让您的SQL更清晰,将代码与数据分开。
尝试使用“SomeString”而不是SomeString。 –
尝试'someString'而不是 – justMe
您是否向您的字符串添加了引号? – duffy356