Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从java.sql.ResultSet检索列名_Java_Jdbc - Fatal编程技术网

从java.sql.ResultSet检索列名

从java.sql.ResultSet检索列名,java,jdbc,Java,Jdbc,使用java.sql.ResultSet是否有一种方法可以通过使用列的索引将列的名称作为String?我看了API文档,但什么也找不到 您可以从ResultSet元数据中获取此信息。看 e、 g 你可以从那里得到列名。如果你这样做 select x as y from table 然后rsmd.getColumnLabel()也将为您获取检索到的标签名称。您可以使用ResultSetMetaData()对象来实现此目的,如下所示: ResultSet rs = stmt.executeQuer

使用
java.sql.ResultSet
是否有一种方法可以通过使用列的索引将列的名称作为
String
?我看了API文档,但什么也找不到

您可以从
ResultSet
元数据中获取此信息。看

e、 g

你可以从那里得到列名。如果你这样做

select x as y from table

然后
rsmd.getColumnLabel()
也将为您获取检索到的标签名称。

您可以使用ResultSetMetaData()对象来实现此目的,如下所示:

ResultSet rs = stmt.executeQuery("SELECT * FROM table");
ResultSetMetaData rsmd = rs.getMetaData();
String firstColumnName = rsmd.getColumnName(1);

除了上述答案之外,如果使用动态查询时需要列名,但不知道有多少列,则可以使用ResultSetMetaData对象首先获取列数,然后循环遍历

修订布莱恩守则:

ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM TABLE2");
ResultSetMetaData rsmd = rs.getMetaData();
int columnCount = rsmd.getColumnCount();

// The column count starts from 1
for (int i = 1; i <= columnCount; i++ ) {
  String name = rsmd.getColumnName(i);
  // Do stuff with name
}
ResultSet rs=stmt.executeQuery(“从表2中选择a、b、c”);
ResultSetMetaData rsmd=rs.getMetaData();
int columnCount=rsmd.getColumnCount();
//列计数从1开始

for(int i=1;i从数据库查询中读取数据的SQL语句返回结果集中的数据。SELECT语句是从数据库中选择行并在结果集中查看行的标准方式。
**java.SQL.ResultSet**
接口表示数据库查询的结果集

  • 获取方法:用于查看当前行列中的数据 被光标指向的
使用结果集的
元数据获取精确的列计数

ResultSet rs=stmt.executeQuery(“从表2中选择a、b、c”);
ResultSetMetaData rsmd=rs.getMetaData();
int numberOfColumns=rsmd.getColumnCount();
布尔b=rsmd.isSearchable(1);

并进一步将其绑定到数据模型表

publicstaticvoidmain(字符串[]args){
连接conn=null;
语句stmt=null;
试一试{
//步骤2:注册JDBC驱动程序
Class.forName(“com.mysql.jdbc.Driver”);
//步骤3:打开连接
System.out.println(“连接到选定的数据库…”);
conn=DriverManager.getConnection(DB_URL,USER,PASS);
System.out.println(“已成功连接数据库…”);
//步骤4:执行查询
System.out.println(“创建语句…”);
stmt=conn.createStatement();
String sql=“选择id、第一个、最后一个、注册年龄”;
结果集rs=stmt.executeQuery(sql);
//步骤5:从结果集中提取数据
while(rs.next()){
//按列名检索
int id=rs.getInt(“id”);
int age=rs.getInt(“年龄”);
String first=rs.getString(“first”);
字符串last=rs.getString(“last”);
//显示值
系统输出打印(“ID:+ID”);
系统输出打印(,年龄:+年龄);
系统输出打印(,First:+First);
System.out.println(“,Last:+Last”);
}
rs.close();
}捕获(SQLSE异常){
//处理JDBC的错误
se.printStackTrace();
}捕获(例外e){
//处理Class.forName的错误
e、 printStackTrace();
}最后{
//最后是用于关闭资源的块
试一试{
如果(stmt!=null)
康涅狄格州关闭();
}捕获(SQLSE异常){
}//什么也不做
试一试{
如果(conn!=null)
康涅狄格州关闭();
}捕获(SQLSE异常){
se.printStackTrace();
}//结束最后一次尝试
}//结束尝试
System.out.println(“再见!”);
}//端干管
//结束jdbc示例
这里的教程非常好:

ResultSetMetaData meta=resultset.getMetaData();//用于执行查询后的有效resultset对象
整数columncount=meta.getColumnCount();
int count=1;//始终从1开始计数
字符串[]columnNames=null;

虽然(columncount这个问题很老了,以前的正确答案也是如此。但是当我发现这个话题时,我所寻找的是类似于这个解决方案的东西。希望它能帮助一些人

// Loading required libraries    
import java.util.*;
import java.sql.*;

public class MySQLExample {
  public void run(String sql) {
    // JDBC driver name and database URL
    String JDBC_DRIVER = "com.mysql.jdbc.Driver";
    String DB_URL = "jdbc:mysql://localhost/demo";

    // Database credentials
    String USER = "someuser"; // Fake of course.
    String PASS = "somepass"; // This too!

    Statement stmt = null;
    ResultSet rs = null;
    Connection conn = null;
    Vector<String> columnNames = new Vector<String>();

    try {
      // Register JDBC driver
      Class.forName(JDBC_DRIVER);

      // Open a connection
      conn = DriverManager.getConnection(DB_URL, USER, PASS);

      // Execute SQL query
      stmt = conn.createStatement();
      rs = stmt.executeQuery(sql);
      if (rs != null) {
        ResultSetMetaData columns = rs.getMetaData();
        int i = 0;
        while (i < columns.getColumnCount()) {
          i++;
          System.out.print(columns.getColumnName(i) + "\t");
          columnNames.add(columns.getColumnName(i));
        }
        System.out.print("\n");

        while (rs.next()) {
          for (i = 0; i < columnNames.size(); i++) {
            System.out.print(rs.getString(columnNames.get(i))
                + "\t");

          }
          System.out.print("\n");
        }

      }
    } catch (Exception e) {
      System.out.println("Exception: " + e.toString());
    }

    finally {
      try {
        if (rs != null) {
          rs.close();
        }
        if (stmt != null) {
          stmt.close();
        }
        if (conn != null) {
          conn.close();
        }
      } catch (Exception mysqlEx) {
        System.out.println(mysqlEx.toString());
      }

    }
  }
}
//加载所需的库
导入java.util.*;
导入java.sql.*;
公共类MySQLExample{
公共无效运行(字符串sql){
//JDBC驱动程序名称和数据库URL
字符串JDBC_DRIVER=“com.mysql.JDBC.DRIVER”;
String DB_URL=“jdbc:mysql://localhost/demo";
//数据库凭据
String USER=“someuser”;//当然是假的。
String PASS=“somepass”;//这也是!
语句stmt=null;
结果集rs=null;
连接conn=null;
向量列名称=新向量();
试一试{
//注册JDBC驱动程序
类forName(JDBC_驱动程序);
//打开连接
conn=DriverManager.getConnection(DB_URL,USER,PASS);
//执行SQL查询
stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
如果(rs!=null){
ResultSetMetaData columns=rs.getMetaData();
int i=0;
而(i
@Cyntech是对的

如果您的表是空的,您仍然需要获取表列名
// Loading required libraries    
import java.util.*;
import java.sql.*;

public class MySQLExample {
  public void run(String sql) {
    // JDBC driver name and database URL
    String JDBC_DRIVER = "com.mysql.jdbc.Driver";
    String DB_URL = "jdbc:mysql://localhost/demo";

    // Database credentials
    String USER = "someuser"; // Fake of course.
    String PASS = "somepass"; // This too!

    Statement stmt = null;
    ResultSet rs = null;
    Connection conn = null;
    Vector<String> columnNames = new Vector<String>();

    try {
      // Register JDBC driver
      Class.forName(JDBC_DRIVER);

      // Open a connection
      conn = DriverManager.getConnection(DB_URL, USER, PASS);

      // Execute SQL query
      stmt = conn.createStatement();
      rs = stmt.executeQuery(sql);
      if (rs != null) {
        ResultSetMetaData columns = rs.getMetaData();
        int i = 0;
        while (i < columns.getColumnCount()) {
          i++;
          System.out.print(columns.getColumnName(i) + "\t");
          columnNames.add(columns.getColumnName(i));
        }
        System.out.print("\n");

        while (rs.next()) {
          for (i = 0; i < columnNames.size(); i++) {
            System.out.print(rs.getString(columnNames.get(i))
                + "\t");

          }
          System.out.print("\n");
        }

      }
    } catch (Exception e) {
      System.out.println("Exception: " + e.toString());
    }

    finally {
      try {
        if (rs != null) {
          rs.close();
        }
        if (stmt != null) {
          stmt.close();
        }
        if (conn != null) {
          conn.close();
        }
      } catch (Exception mysqlEx) {
        System.out.println(mysqlEx.toString());
      }

    }
  }
}
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM TABLE2");
ResultSetMetaData rsmd = rs.getMetaData();
int columnCount = rsmd.getColumnCount();

Vector<Vector<String>>tableVector = new Vector<Vector<String>>(); 
boolean isTableEmpty = true;
int col = 0;

 while(rs.next())
    {
      isTableEmpty = false;  //set to false since rs.next has data: this means the table is not empty
       if(col != columnCount)
          {
            for(int x = 1;x <= columnCount;x++){
                 Vector<String> tFields = new Vector<String>(); 
                 tFields.add(rsmd.getColumnName(x).toString());
                 tableVector.add(tFields);
             }
            col = columnCount;
          }
     } 


      //if table is empty then get column names only
  if(isTableEmpty){  
      for(int x=1;x<=colCount;x++){
           Vector<String> tFields = new Vector<String>(); 
           tFields.add(rsmd.getColumnName(x).toString());
           tableVector.add(tFields);
        }
      }

 rs.close();
 stmt.close();

 return tableVector; 
ResultSet rsTst = hiSession.connection().prepareStatement(queryStr).executeQuery(); 
ResultSetMetaData meta = rsTst.getMetaData();
int columnCount = meta.getColumnCount();
// The column count starts from 1

String nameValuePair = "";
while (rsTst.next()) {
    for (int i = 1; i < columnCount + 1; i++ ) {
        String name = meta.getColumnName(i);
        // Do stuff with name

        String value = rsTst.getString(i); //.getObject(1);
        nameValuePair = nameValuePair + name + "=" +value + ",";
        //nameValuePair = nameValuePair + ", ";
    }
    nameValuePair = nameValuePair+"||" + "\t";
}
import java.sql.*;

public class JdbcGetColumnNames {

    public static void main(String args[]) {
        Connection con = null;
        Statement st = null;
        ResultSet rs = null;

        try {
            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/komal", "root", "root");

            st = con.createStatement();

            String sql = "select * from person";
            rs = st.executeQuery(sql);
            ResultSetMetaData metaData = rs.getMetaData();

            int rowCount = metaData.getColumnCount();

            System.out.println("Table Name : " + metaData.getTableName(2));
            System.out.println("Field  \tDataType");

            for (int i = 0; i < rowCount; i++) {
                System.out.print(metaData.getColumnName(i + 1) + "  \t");
                System.out.println(metaData.getColumnTypeName(i + 1));
            }
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}
PreparedStatement stmt = connection.prepareStatement("SHOW COLUMNS FROM `yourTable`");

ResultSet set = stmt.executeQuery();

//store all of the columns names
List<String> names = new ArrayList<>();
while (set.next()) { names.add(set.getString("Field")); }
DatabaseMetaData md = conn.getMetaData();
ResultSet rset = md.getColumns(null, null, "your_table_name", null);

System.out.println("your_table_name");
while (rset.next())
{
    System.out.println("\t" + rset.getString(4));
}
while (rs.next()) {
   for (int j = 1; j < columncount; j++) {
       System.out.println( rsd.getColumnName(j) + "::" + rs.getString(j));      
   }
}
jdbcTemplate.query("select * from books", new RowCallbackHandler() {
        public void processRow(ResultSet resultSet) throws SQLException {
            ResultSetMetaData rsmd = resultSet.getMetaData();
            for (int i = 1; i <= rsmd.getColumnCount(); i++ ) {
                String name = rsmd.getColumnName(i);
                // Do stuff with name
            }
        }
    });
Connection conn = null;
PreparedStatement preparedStatement = null;
    try {
        Class.forName("com.mysql.cj.jdbc.Driver");
        conn = MySQLJDBCUtil.getConnection();
        preparedStatement = conn.prepareStatement(sql);
        if (params != null) {
            for (int i = 0; i < params.size(); i++) {
                preparedStatement.setObject(i + 1, params.get(i).getSqlValue());
            }
            ResultSet resultSet = preparedStatement.executeQuery();
            ResultSetMetaData md = resultSet.getMetaData();
            while (resultSet.next()) {
                int counter = md.getColumnCount();
                String colName[] = new String[counter];
                Map<String, Object> field = new HashMap<>();
                for (int loop = 1; loop <= counter; loop++) {
                    int index = loop - 1;
                    colName[index] = md.getColumnLabel(loop);
                    field.put(colName[index], resultSet.getObject(colName[index]));
                }
                rows.add(field);
            }
        }
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        if (preparedStatement != null) {
            try {
                preparedStatement.close();
            }catch (Exception e1) {
                e1.printStackTrace();
            }
        }
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    return rows;
ResultSet resultSet = null;
DatabaseMetaData metaData = null;

    try {
        metaData  = connection.getMetaData();
        resultSet = metaData.getColumns(null, null, tableName, null);

        while (resultSet.next()){
            String name = resultSet.getString("COLUMN_NAME");
        }
    }