私は新しいメンバーです。私は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=? の代わりに p.p_id='1' を配置して navicatLite エディターにクエリを配置すると、? 、元気でした。それは私に正しい値を示しました。
しかし、私のJavaプログラムから。この例外があります。
スレッド「メイン」の例外 java.sql.SQLException: そのような列はありません: p.p_id org.sqlite.DB.throwex (DB.java:288) で org.sqlite.NativeDB.prepare(ネイティブメソッド)で org.sqlite.DB.prepare (DB.java:114) で org.sqlite.PrepStmt.(PrepStmt.java:37) で org.sqlite.Conn.prepareStatement (Conn.java:231) で org.sqlite.Conn.prepareStatement (Conn.java:224) で org.sqlite.Conn.prepareStatement (Conn.java:213) で programTest.test.main(test.java:19) で Java 結果: 1
person テーブルと p_id フィールドが存在すると確信しています。このサイトでこの種の質問を検索しましたが、java ではなく ruby on rails に関連するものを見つけました。何が悪いのかわかりません。
私の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 を使用して開発しています。