0

这是我用 Apache dbutils 编写的测试程序:

    public static void main(String[] args) {
        Connection conn = null;
        String url = "jdbc:mysql://localhost:3306/bacula";
        String driver = "com.mysql.jdbc.Driver";
        String user = "bacula";
        String pwd = "root";
        try {
            DbUtils.loadDriver(driver);
            conn = DriverManager.getConnection(url, user, pwd);
            QueryRunner query = new QueryRunner();

            List<Map<String, Object>> mapList = query.query(conn, "select * from Client", new MapListHandler());

            for (Iterator<Map<String, Object>> li = mapList.iterator(); li.hasNext();) {
                Map<String, Object> m = li.next();  
                for (Iterator<Entry<String, Object>> mi = m.entrySet().iterator(); mi.hasNext();) {  
                    Entry<String, Object> e = mi.next();  
                    System.out.println(e.getKey() + "=" + e.getValue());  
                }  
            }  
        } catch (SQLException se) {
            se.printStackTrace();
        } finally {
            DbUtils.closeQuietly(conn);
        }
    }
}

输出是:

ClientId=1
Name=[B@8146158
Uname=[B@7202dc8c
AutoPrune=1
FileRetention=2592000
JobRetention=15552000

但是 Name 和 Uname 在 MySQL 中应该是“string”类型,我在哪里出错了?谢谢。

4

2 回答 2

1

使用String s = new String(bytes);. 表示是byte[]从选择查询返回的。

在你的程序中,它会像,

String key = e.getKey();
String value = e.getValue();
if(key.equals("Name") || key.equals("UName")){
    System.out.println(key + "=" + new String((byte[])value));
}else{
   System.out.println(key  + "=" + value );
}

我可能有错别字。但是试试这个。看起来你正在获取 byte[]

于 2015-08-13T10:19:00.870 回答
0

查看此页面以了解 SQL 类型和 java 类型之间的映射

http://dev.mysql.com/doc/connector-j/en/connector-j-reference-type-conversions.html

于 2015-08-13T10:21:04.413 回答