2016-10-08 8 views
0

私はJava Swingプログラミングの初心者です。 JDBC ODBCドライバを使用して私のJFrameをMA Accessデータベースに接続しました。ここには誤ったコードがあります。できませんStatement.executeQuery()から選択した列を取得するには

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
     con = DriverManager.getConnection("jdbc:odbc:MS Access Database"); 
     st = con.createStatement(); 
     String q = "select "+Name+",Date/Subject from "+$Class; 
     R = st.executeQuery(q); 

     int row=0; 
     while(R.next()) 
     { 
      Table.setValueAt(R.getString("Date/Sujbect"),row,0); 
      Table.setValueAt(R.getString(Name),row,1); 
      row++; 
     } 

st.executeQuery(q)に達すると、例外をスローします。私は理解していない何

"Too few Parameters. Expected 2". 

はこれです:クエリは

"select * from "+ $Class; 

のように書かれているとき、それは完全に正常に動作します。他のいくつかのJFrameでも、私は同じことをやっています。この例外は、私が星の代わりに正確な列(*)を言及する限り、ログとして保持されます。

この問題を回避する方法があるかどうか、または私が使用する可能性がある他の方法も教えてください。

+1

テーブル構造を共有できますか? – Pirate

+2

テーブルに「日付/件名」という列がありますか? 'Date/Subject ''で区切られた 'Date'カラム(または関数)*として' Date/Subject'を解釈します。 'Date/Subject''は大括弧で囲む必要があります。カラム。これらの列が存在しない場合、Accessデータベースエンジンはそれらをパラメータプレースホルダとして解釈します。したがって、「パラメータが必要です」というエラーが発生します。 –

答えて

2

もこの

問題は、SQL文で任意の回避策がある場合は私に知らせてください。あなたはどこかでエラーがあります。

String q = "select "+Name+",Date/Subject from "+$Class; 

SQLに問題がある場合は、変数を使用しないでください。まず、列名をハードコーディングしてSQLを動作させます。次のようなものがあります。

次に、そのようになったら、ステートメントを動的にし、変数を使用して列名またはテーブル名を指定します。

さらに詳しいヘルプが必要な場合は、SQLチュートリアルを見つけて適切な構文を参照してください。ここにあなたを始めるためのものがあります:JDBC Database Access

テーブル名や列名がわからないため、コードを書くことはできません。それがあなたの仕事です。

関連する問題