怎样解决无法获取MYSQL字段别名问题

时间:2022-09-16 15:47:33

有客户通过润乾报表连接mysql数据库,数据集语法使用了别名(例如select id as testid from test),但是在报表中无法通过别名获取值。

通过jdbc直连测试各版本jdbc驱动测试,程序如下,

<%

try

{

String driverName="com.mysql.jdbc.Driver";

String userName="root";

String userPasswd="";

String dbName="test";

String tableName="user";

String url="jdbc:mysql://localhost:3306/"+dbName+"?user="+userName+"&password="+userPasswd;

Class.forName("com.mysql.jdbc.Driver").newInstance();

Connection conn=DriverManager.getConnection(url);

String sql="select id as testid from num";

Statement stmt=conn.createStatement();

ResultSet rs=stmt.executeQuery(sql);

ResultSetMetaData   rsmd   =   rs.getMetaData();

String colname= rsmd.getColumnName(1) ;

String colname1= rsmd.getColumnLabel(1) ;

System.out.println("aaaaaaaaaaaaaaaaaaaaaaaaaaa="+colname);

System.out.println("aaaaaaaaaaaaaaaaaaaaaaaaaaa="+colname1);

while(rs.next())

{

%>

<tr>

   <td><%=rs.getInt("testid")%></td>

</tr>

<%

}

rs.close();

stmt.close();

conn.close();

}

catch(Exception e)

{

e.printStackTrace();

}

%>,

发现使用jdbc5.1.x系列驱动getColumnName获取的不是别名。

使用润乾报表连接mysql数据库时如果用到别名,可以通过使用5.0.x系列及以下驱动解决不能获取别名的问题。

附jdbc驱动与Mysql版本对应关系:

Connector/J 5.1 支持Mysql 4.1、Mysql 5.0、Mysql 5.1、Mysql 6.0 alpha这些版本。

Connector/J 5.0 支持MySQL 4.1、MySQL 5.0 servers、distributed transaction (XA)。

Connector/J 3.1 支持MySQL 4.1、MySQL 5.0 servers、MySQL 5.0 except distributed transaction (XA) support。

Connector/J 3.0 支持MySQL 3.x or MySQL 4.1。