报表知识库
我要提问

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


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



有客户通过润乾报表连接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.1Mysql 5.0Mysql 5.1Mysql 6.0 alpha这些版本。


Connector/J 5.0 支持MySQL 4.1MySQL 5.0 serversdistributed transaction (XA)


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


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


标签: