SQL Server 2008 - как получить имя столбца и значение вместе? - PullRequest
0 голосов
/ 24 января 2011

Я не уверен, если это возможно ..

Я использую SQL Server 2008 и Java.

У меня есть таблица

--------------
|   users    |
--------------
|  name      |
|  address   |
|  password  |
|____________|

Тогда яdo:

SELECT name, address, password FROM users;

Я получил все значения из каждого столбца.

Но что, если Я тоже хочу получить имена столбцов.

Когдарезультат запроса возвращается, я хочу знать, какой столбец запрашивается.

Как получить значение и столбцы вместе? Возможно ли это без изменения запроса с помощью Java?

код

em = EmProvider.getInstance().getEntityManagerFactory().createEntityManager();
Query query = em.createNativeQuery("SELECT name, address, password, birthday FROM users");
//query result is stored in list consists of object array
List<Object[]> out = query.getResultList();

//so result is like this
List<
   [john, 1st ave, 1234, 12/12/2010]
   [mike, 2st ave, 1111, 12/11/2011]
>

//now I create JSON
{name:john, address:1st ave, birthday....}

Но запрос может измениться, поэтому при создании JSON я не хочу жестко кодировать «имя» или «адрес».

Ответы [ 2 ]

3 голосов
/ 24 января 2011

Имена столбцов взяты из ResultSetMetaData.

Например:

String sql = "Select * from Activity";
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery( sql );
ResultSetMetaData md = rs.getMetaData();
int columns = md.getColumnCount();

//  Get column names

for (int i = 1; i <= columns; i++)
{
    columnNames.addElement( md.getColumnName(i) );
}

//  Get row data

while (rs.next())
{
    Vector row = new Vector(columns);

    for (int i = 1; i <= columns; i++)
    {
        row.addElement( rs.getObject(i) );
    }

    data.addElement( row );
}
1 голос
/ 24 января 2011

Вы можете просто сделать это - при условии, что вам нужно имя столбца с последующим значением столбца -

SELECT "name" as column1, name, "address" as column2, address, "password" as column3, password FROM users;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...