Jdbc queryForList返回所有列值均为空的映射列表

Jdbc queryForList返回所有列值均为空的映射列表,jdbc,spring-data,spring-jdbc,Jdbc,Spring Data,Spring Jdbc,任何使用jdbcTemplate.queryForList的调用都会返回一个映射列表,其中所有列的值都为空。列应该有字符串值 与在本机SQL客户机中运行相同查询时得到的结果相比,我确实得到了正确的行数 我使用的是JDBC ODBC桥,数据库是MS SQL server 2008 我的DAO中有以下代码: public List internalCodeDescriptions(String listID) { List rows = jdbcTemplate.queryForList("se

任何使用jdbcTemplate.queryForList的调用都会返回一个映射列表,其中所有列的值都为空。列应该有字符串值

与在本机SQL客户机中运行相同查询时得到的结果相比,我确实得到了正确的行数

我使用的是JDBC ODBC桥,数据库是MS SQL server 2008

我的DAO中有以下代码:

public List internalCodeDescriptions(String listID) {
  List rows = jdbcTemplate.queryForList("select CODE, DESCRIPTION from CODE_DESCRIPTIONS where LIST_ID=? order by sort_order asc", new Object[] {listID});
  //debugcode start
  try {
    Connection conn1 = jdbcTemplate.getDataSource().getConnection();
    Statement stat = conn1.createStatement();
    boolean sok = stat.execute("select code, description from code_descriptions where list_id='TRIGGER' order by sort_order asc");
    if(sok) {
        ResultSet rs = stat.getResultSet();
        ResultSetMetaData rsmd = rs.getMetaData();
        String columnname1=rsmd.getColumnName(1); 
        String columnname2=rsmd.getColumnName(2);
        int type1 = rsmd.getColumnType(1);
        int type2 = rsmd.getColumnType(2);
        String tn1 = rsmd.getColumnTypeName(1);
        String tn2 = rsmd.getColumnTypeName(2);

        log.debug("Testquery gave resultset with:");
        log.debug("Column 1 -name:" + columnname1 + " -typeID:"+type1 + " -typeName:"+tn1);
        log.debug("Column 2 -name:" + columnname2 + " -typeID:"+type2 + " -typeName:"+tn2);

        int i=1;
        while(rs.next()) {
            String cd=rs.getString(1);
            String desc=rs.getString(2);
            log.debug("Row #"+i+": CODE='"+cd+"' DESCRIPTION='"+desc+"'");
            i++;
        }
    } else {
        log.debug("Query execution returned false");
    }
    } catch(SQLException se) {
        log.debug("Something went haywire in the debug code:" + se.toString());
    }


    log.debug("Original jdbcTemplate list result gave:");
    Iterator<Map<String, Object>> it1= rows.iterator();
    while(it1.hasNext()) {
        Map mm = (Map)it1.next();
        log.debug("Map:"+mm);
        String code=(String)mm.get("CODE");
        String desc=(String)mm.get("description");
        log.debug("CODE:"+code+" : "+desc);
    }
    //debugcode end
    return rows;
}
总共58次重复

为什么queryForList方法的结果在每行的所有列中都返回NULL?如何使用jdbcTemplate.queryForList获得所需的结果

xF8应该是字母ø,因此我有一些编码问题,但我看不出这会如何导致所有值——以及不包含任何奇怪字母的字符串(se row#2)——在从jdbcTemplate.queryForList方法返回的映射列表中变成空值


同样的代码在另一台服务器上使用jdbc驱动程序对MySQL server 5.5数据库运行良好。

该问题通过使用MS SQL server jdbc驱动程序而不是使用jdbc ODBC桥得到解决。我不知道为什么它不能与网桥一起工作。

为什么要使用JDBC ODBC网桥?你能试试Microsoft或jTDS JDBC驱动程序吗?我没有选择将文件复制到该服务器(它位于安全网络上,无法访问internet)。我确实说服了客户的系统管理员将MS SQL Server jdbc驱动程序复制到服务器上,这确实解决了问题。我不抱太大希望,因为我使用“普通”jdbc代码获取数据,而不是使用jdbcTemplate。
Testquery gave resultset with:
Column 1 -name:code -typeID:-9 -typeName:nvarchar
Column 2 -name:decription -typeID:-9 -typeName:nvarchar
Row #1: CODE='C1' DESCRIPTION='BlodoverxF8rin eller bruk av blodprodukter'
Row #2: CODE='C2' DESCRIPTION='Kodetilfelle, hjertestans/respirasjonstans'
Row #3: CODE='C3' DESCRIPTION='Akutt dialyse'
...
Row #58: CODE='S14' DESCRIPTION='Forekomst av hvilken som helst komplikasjon'

...

Original jdbcTemplate list result gave:
Map:(CODE=null, DESCRIPTION=null)
CODE:null : null
Map:(CODE=null, DESCRIPTION=null)
CODE:null : null
...