Selectステートメントから値を返そうとしています。私が返す値は主キー列からのものなので、その唯一の値です。
SQLステートメントは_SELECT itemNo FROM item WHERE itemName = 'astringvalue';
_です。
値を取得するための私のメソッドは次のようになります。
_private String viewValue(Connection con, String command) throws SQLException
{
String value = null;
Statement stmt = null;
try
{
stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(command);
while (rs.next())
value = rs.toString();
}
catch (SQLException e )
{
e.printStackTrace();
}
finally
{
if (stmt !=
null) { stmt.close(); }
}
return value;
}
_
私もgetConnection()
メソッドを持っています。
ここでは、imがviewValue
methodを呼び出すために使用しているものを示します。
_if((action.getSource() == btnSave) ||(action.getSource() == btnSavePrint) )
{
String findItemNoCommand = "SELECT itemNo FROM `item` WHERE itemName = '" + itemList.getSelectedItem() + "'";
try
{
itemNo = viewValue(conn, findItemNoCommand);
}
catch (SQLException e)
{
e.printStackTrace();
}
System.out.println(itemNo);
}
_
上記のコードはButtonHandler
用に作成されました
現在、println
の場合、「_com.mysql.jdbc.JDBC4ResultSet@1e72cae
_」を取得しています..どうしてかわかりませんが、ここでは、ResultSetが間違った選択であると想定しています。
私の質問は..機能するものは何ですか?
私が間違っていることについての助けや手がかりは大歓迎です。
_Right now, for the println I'm getting a "com.mysql.jdbc.JDBC4ResultSet@1e72cae"
_
ここでResultSet
オブジェクトを返すため、value = rs.toString();
docs から、
ResultSetオブジェクトは、データベースの結果セットを表すデータのテーブルであり、通常、データベースにクエリを実行するステートメントを実行することによって生成されます
カーソルを介してResultSetオブジェクトのデータにアクセスします。このカーソルはデータベースカーソルではないことに注意してください。このカーソルは、ResultSetのデータの1行を指すポインターです。最初、カーソルは最初の行の前に配置されています。メソッドResultSet.nextは、カーソルを次の行に移動します。カーソルが最後の行の後にある場合、このメソッドはfalseを返します。このメソッドは、whileループでResultSet.nextメソッドを繰り返し呼び出し、ResultSet内のすべてのデータを反復処理します。
列から値を取得するように結果セットに指示する必要があります。
_value = rs.getString(1);
_
インデックスを介して
_value = rs.getString("itemNo");
_
または列名を介して
ResultSet
から実際の値を取得するには、rs.getInt(1)
またはrs.getString(1)
を使用します。次に、JDBCチュートリアルを読みます。
に変更
if(rs.next())
そして
rs.getString("itemNo");
動く!!!
変化する :
_value = rs.toString();
_
に:
_value = rs.getString(1);
_
rs.toStringは、オブジェクトtoString
のResultSet
メソッドの結果を返します。 rs.getString(1)
は、結果セットの最初のパラメーターをString
として提供します。
変える必要がある
while (rs.next())
value = rs.toString();
に
while (rs.next())
value = rs.getString("itemNo");
これを試して:
private String viewValue(Connection con, String command) throws SQLException
{
String value = null;
Statement stmt = null;
try
{
stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(command);
while (rs.next())
value = rs.getString(1);
}
catch (SQLException e )
{
e.printStackTrace();
}
finally
{
if (stmt !=
null) { stmt.close(); }
}
return value;
}