【问题标题】:SQL server 2008 - how to get column name and value together?SQL server 2008 - 如何将列名和值放在一起?
【发布时间】:2011-01-24 06:12:02
【问题描述】:

我不确定这是否可能..

我使用的是 SQL Server 2008 和 Java。

我有一张桌子

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

然后我做:

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 时,我不想硬编码“名称”或“地址”。

【问题讨论】:

  • 不理解您的问题。您可以显示有关如何显示列名的示例输出吗?
  • 您已经知道哪些列和值可以组合在一起。您的结果集具有标记的列,并且您还知道您要求的列。如果您在不清楚或您遇到的具体问题的地方分享您正在使用的代码,您的问题可能会更有意义。

标签: java sql sql-server json


【解决方案1】:

列名来自 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 );
}

【讨论】:

  • 这是假设您使用 JDBC 的方法。但我认为 OP 正在使用 JPA。
  • @Ray,也许可以,但是如果您查看问题的原始发布(在修改之前),您会发现没有发布任何代码,所以我根据原始问题给出了建议。跨度>
【解决方案2】:

你可以这样做 - 假设你需要 columnname 后跟 columnvalue -

SELECT "name" as column1, name, "address" as column2, address, "password" as column3, password FROM users;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-08
    • 1970-01-01
    • 2013-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多