我使用java java.sql。*从SQLite DB查询。我发现了一个starnge问题,即我写的SqlString为:Jave SQL executeQuery为有效的sql语句抛出错误
SELECT n.Name as Name,
c.Value as Value0,
d.Value as Value1
FROM (Table1 c inner join Table2 n on c.NameID = n.ID),
Table3 d
WHERE c.RunID = 1
and d.RunID = 2
and c.NameID = d.NameID
声明stmt.executeQuery(sqlQuery)
抛出以下异常:
java.sql.SQLException: no such column: n.Name
at org.sqlite.DB.throwex(DB.java:288)
at org.sqlite.NativeDB.prepare(Native Method)
at org.sqlite.DB.prepare(DB.java:114)
at org.sqlite.Stmt.executeQuery(Stmt.java:89).............
Name
已经是表2表的一部分。 SQLite命令提示符下的相同语句正常工作。但是,当我删除了开放的括号并尝试从java执行时,没有任何问题。任何想法为什么发生这种情况?
您正在使用什么应用程序执行的SQL“直接”?在将用户应用程序发送到数据库服务器之前,是否有机会对输入进行一些翻译?如果数据库对完全相同的输入有不同的响应,取决于系统发送的数据,我会感到惊讶。 –
我正如前面所述直接从java代码访问sqlite数据库。在java代码中只有选择的语句。没有插入/更新。 – tor
我想你正在使用sqlite命令shell。你确定,你正在使用相同的版本? sqlite库通常编译到命令shell中,所以不能保证,它和你在java程序中使用的一样。例如,在版本3.6.6中,我看到了与在Java中看到的相同的错误消息,并且使用SQLite 3.7.13版,我看不到错误消息。所以,这种行为在过去已经发生了变化。 – Stefan