实现通讯录管理系统中的问题

请问,在Java+Swing实现通讯录管理系统中,姓名检索输入姓名后不能用,是什么原因?
protected void searchInfo(String key) {
    DBConn dbconn = new DBConn();
    Statement stmt = null;
    ResultSet rs = null;
    int rowNum = infoTable.getSelectedRow();

    try {
        stmt = dbconn.getConnection().createStatement();
        String sql = "select * from my_address_book where name like'%" +key + "%'";
        System.out.println(sql);
        rs = stmt.executeQuery(sql);
        info.clear();
        while (rs.next()) {
            Vector<String> row = new Vector<String>();
            row.add(rs.getString(1));
            row.add(rs.getString(2));
            row.add(rs.getString(3));
            row.add(rs.getString(4));
            row.add(rs.getString(5));
            row.add(rs.getString(6));
            row.add(rs.getString(7));
            row.add(rs.getString(8));
            info.add(row);
        }
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        try {
            if (stmt != null) {
                stmt.close();
            }
            if (rs != null) {
                rs.close();
            }

        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        DefaultTableModel model = new DefaultTableModel(MyAddressBook.info, MyAddressBook.column);

        MyAddressBook.infoTable.setModel(model);
        TableColumn column1 = MyAddressBook.infoTable.getColumnModel().getColumn(0);
        column1.setMaxWidth(40);
        column1.setMinWidth(40);

        TableColumn column3 = MyAddressBook.infoTable.getColumnModel().getColumn(2);
        column3.setMaxWidth(40);
        column3.setMinWidth(40);
    }
}
表中什么也没有显示,java中出现:select * from my_address_book where name like'%张%'
曾尝试假如get方法,但出错了
输入姓名,会出现相关的那一行

like后面不能这么用,要用sql语法concat()去拼接。

String sql = "select * from my_address_book where name like concat('%'" +key + "%')";