[英]SQLException : no such column
我是新成员。 我想,我一直在与sqlitejdbc挣扎。 我从java程序中查询了sqlite数据库。我得到了以上异常。 我的疑问是
select *
from ( person as p
inner join company as c on p.p_id=c.p_id
)
inner join contact as ct on p.p_id=ct.p_id
where p.p_id=?;
当我通过放置p.p_id ='1'而不是p.p_id =?将查询放在navicatLite编辑器上时? 我没事 它向我展示了正确的价值观
但是从我的java程序。 我得到了这个例外。
Exception in thread "main" java.sql.SQLException: no such column: p.p_id 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.PrepStmt.(PrepStmt.java:37) at org.sqlite.Conn.prepareStatement(Conn.java:231) at org.sqlite.Conn.prepareStatement(Conn.java:224) at org.sqlite.Conn.prepareStatement(Conn.java:213) at programTest.test.main(test.java:19) Java Result: 1
我确定存在person表和p_id字段。 我在这个网站上搜索过这类问题,但是我发现了一个与ruby相关的问题,而不是java。 我不知道出了什么问题。
我的java程序是
import java.sql.*;
/**
*
* @author Htet 101
*/
public class test {
public static void main(String[] args) throws Exception {
Class.forName("org.sqlite.JDBC");
Connection conn =
DriverManager.getConnection("jdbc:sqlite://C://Users//Htet 101//Documents//addressbook.s3db");
PreparedStatement stat = conn.prepareStatement("select * from (person as p inner join company as c on p.p_id=c.p_id) inner join contact as ct on p.p_id=ct.p_id where p.p_id=?;");
stat.setInt(1, 1);
ResultSet rs = stat.executeQuery();
while (rs.next()) {
System.out.print("Name : " + rs.getString("p_name") + " ");
}
rs.close();
conn.close();
}
}
我正在使用NetBeans 6.9.1,SQLite 3.7.8,SQLiteJDBC v056进行开发。
我没有绝对的把握,但我认为,如果你从删除括号它应该工作From
: select * from person as p inner join company as c on p.p_id=c.p_id
inner join contact as ct on p.p_id=ct.p_id where p.p_id=?;
如果使用navicat完全相同的查询,并且java错误,则表示驱动程序有问题。 但请确保它完全相同。
而且,这些括号是可疑的 - 摆脱它们。
括号可能被解释为您正在开始在Oracle中所谓的内联视图 - 基本上是动态创建的视图。 所以我认为这不是驱动程序中的错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.