私はこの1つの簡単なヘルプが必要です!Selectステートメントは0行を返します:不可
public boolean memberExists(int id) {
try {
open();
PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM client WHERE id = ?");
pstmt.setInt(1,id);
boolean _res = pstmt.executeQuery().getRow() > 0;
close();
return _res;
}
catch (SQLException e){ System.out.print(e); }
return false;
}
}
新しい接続を取得しopen()
方法とclose()
方法は、接続を閉じます。
私はメンバーがこのコードのデータベースに存在するかどうかを確認しようとしています。かなり簡単。
ナットを駆動するものは、常に0行を返すということです。クエリSELECT * FROM client
でも0行が返されます。
私は自分のデータベースとまったく同じクエリを検査するsqlitebrowser.exeを使用した行の右の数を返します。
私はすでにこの問題に遭遇していたと思いますが、正確に何かを覚えていません。私は何かが欠けているように感じる。
また、私のコードでは、私はデータベースにINSERTはなく、はを選択することができます。これは本当に奇妙です。
open()
方法。 ResultSet.getRow()から
public DBConnector open() {
boolean _exists = new File(path).exists();
try {
conn = DriverManager.getConnection("jdbc:sqlite:" + path);
if (!_exists) create();
} catch (SQLException e) {
System.out.println(e.getMessage());
}
return this;
}
問題は、あなたが 'のgetRow()'あなたはそれがないと思うよりも、他の何かをしている呼んでいるということです。 'pstmt.executeQuery()。getRow()> 0'の代わりに' pstmt.executeQuery()。next() 'を使います。' next() 'は行がない場合に' false'を返します。 – Jesper
最近読んだドキュメントは過大評価されています。 – Kayaman
コメントありがとうございました!とても有難い!このフォーラムにはあなたのような人がもっと必要です! – Bird