2016-12-04 88 views
-3

このコードで返すとき、私はlopp変数 のidから行を取得しようとしています。カウントが の数ではなく、合計数データベースの行は、私がmysqlでそれを実行したときに正しいansを返します。 しかし、最後の行にrs.getstring( "概念名")を使用して "概念名"列の内容を取得すると、空の結果セットエラーが発生します。java.sql.SQLException:空の結果セットで不正な操作です。クエリが1行だけ

Class.forName("com.mysql.jdbc.Driver"); 
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/niitdb","root",""); 

for(pos=0; pos<7; pos++){ 

    SQL = "SELECT `concept name` FROM `concepts " +course+ "` where `concept id` = " + pos+1; 
    Statement stmt = con.createStatement(); 
    rs = stmt.executeQuery(SQL); 
    rs.next(); 
    Cname[cnt] = new JLabel(rs.getString("concept name")); // error is on this line 
} 
+1

最も可能性の高い説明は、クエリがレコードを返さないことです。 Workbenchから直接クエリを実行できますか? –

+0

私はphpmyadminでクエリを試して、それは私が期待していた1行を返しました。 –

+0

'rs.getString( "コンセプト名")をデフォルト値で置き換えると、正しく実行されます –

答えて

1

JDBCドライバがブランクの列名を正しく処理できない場合があります。それが本当だった場合は、結果をテストすることなくrs.next()を呼び出し、唯一の列の値を取得するために進むべきではないと私は

SELECT `concept name` as concept_name FROM ... 

、その後

if (rs.next()) 
{ 
    Cname[cnt] = new JLabel(rs.getString("concept_name")); 
} 

としてそれをしようとするだろう。

+0

ありがとうEJP しかし、coulmnの名前を変更してもまだ動作しませんでした 以前はrs.next()が処理されていましたが、その場合はクエリが主キー 'concept id'である –

+0

を持つ単一の行を返しても、 というラベルは作成されませんでした。行が返されました。 *それはあなたが調査する必要がある問題です。 – EJP

+0

@ejp実際には_columns_が返されないという問題があります。 –

関連する問題