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;