簡體   English   中英

SQLException:沒有這樣的列

[英]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進行開發。

我沒有絕對的把握,但我認為,如果你從刪除括號它應該工作Fromselect * 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM