Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.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 从jdbc的元数据对象获取完整的列名_Java_Jdbc - Fatal编程技术网

Java 从jdbc的元数据对象获取完整的列名

Java 从jdbc的元数据对象获取完整的列名,java,jdbc,Java,Jdbc,我正在处理一个结果集,其中返回的列的数量不同,因此我需要知道存在哪些列。我发现我可以像这样提取返回的列名: ResultSetMetaData meta = rs.getMetaData(); ArrayList<String> columns = new ArrayList<String>(); for (int i = 0; i < meta.getColumnCount(); i++) { columns.add(meta.getColumnLabel

我正在处理一个结果集,其中返回的列的数量不同,因此我需要知道存在哪些列。我发现我可以像这样提取返回的列名:

ResultSetMetaData meta = rs.getMetaData();
ArrayList<String> columns = new ArrayList<String>();
for (int i = 0; i < meta.getColumnCount(); i++) {
    columns.add(meta.getColumnLabel(i+1));
}

显示为id、name而不是events.id、events.name,这在连接表时非常糟糕,并且希望返回的列名不同。

在连接表时必须指定别名。有两个方法—getColumnName—返回列名,getColumnLabel—返回列标签别名。如果未指定别名,则getColumnLabel返回的值与getColumnName返回的值相同。

在连接表时必须指定别名。有两个方法—getColumnName—返回列名,getColumnLabel—返回列标签别名。如果未指定别名,则getColumnLabel返回的值与getColumnName返回的值相同。

答案是:无法从select语句检索表别名。但是,您可以检索列的基础表的名称,因此您应该能够使用ResultSetMetaData中的getTableint检索此名称,因为您没有使用表别名,而是使用实际的表。

答案是:无法从select语句检索表别名。但是,您可以检索列的基础表的名称,因此您应该能够使用ResultSetMetaData中的getTableint检索该名称,因为您没有使用表别名,但是使用的是实际的表。

别名不是强制性的,我根据类名动态构造了sql语句,这里每个列名都以表名作为前缀,因此不需要别名。别名不是强制性的,我根据类名和每个列名动态构造了sql语句以表名作为前缀,因此不需要别名。似乎可以使用meta.getTableNamei+1获取当前选定列的表名值。似乎可以使用meta.getTableNamei+1获取当前选定列的表名值。
select events.id, events.name from events;