web-dev-qa-db-ja.com

ResultSetのデータを列名とともに印刷します

Javaを介してSQLデータベースから列名を取得しています。 ResultSetから列名を取得できることも知っています。だから私はこのSQLクエリを持っています

 select column_name from information_schema.columns where table_name='suppliers'

問題は、ResultSetから列名を取得する方法がわからないことです。私のコードは

public void getAllColumnNames() throws Exception{

String sql = "SELECT column_name from information_schema.columns where table_name='suppliers'";

PreparedStatement ps = connection.prepareStatement(sql);
ResultSet rs = ps.executeQuery(sql);
 // extract values from rs


}
25
ResultSet resultSet = statement.executeQuery("SELECT * from foo");
ResultSetMetaData rsmd = resultSet.getMetaData();
int columnsNumber = rsmd.getColumnCount();
while (resultSet.next()) {
    for (int i = 1; i <= columnsNumber; i++) {
        if (i > 1) System.out.print(",  ");
        String columnValue = resultSet.getString(i);
        System.out.print(columnValue + " " + rsmd.getColumnName(i));
    }
    System.out.println("");
}

参照:ResultSetの結果の印刷

62
Zeb

1)PreparedStatementの代わりにStatementを使用します

2)ResultSetでクエリを実行した後、rs.getString()を使用して値を抽出します。

Statement st=cn.createStatement();
ResultSet rs=st.executeQuery(sql);
while(rs.next())
{
    rs.getString(1); //or rs.getString("column name");
}
8
Java Enthusiast

さらに使用する

rs.getString(1);
rs.getInt(2);

1、2はテーブルの列番号で、coloumnのデータ型ごとにintまたはstringを設定します

3
swapnil gandhi

ドキュメント をご覧ください。次の間違いを犯しました。まず、ps.executeQuery()にはパラメーターがありません。代わりに、SQLクエリをそれに渡しました。

第二に、準備されたステートメントに関して、?記号は、パラメーターを渡す場合に使用します。後でそれを使用してバインドします

setXXX(index, value) 

ここで、xxxはデータ型を表します。

1
Ysr Shk

しようとしていることのために、PreparedStatementの代わりにStatementを使用できます。あなたのコードは

String sql = "SELECT column_name from information_schema.columns where table_name='suppliers';";

Statement s  = connection.createStatement();
ResultSet rs = s.executeQuery(sql);

お役に立てれば。

0
Pranav