public class Db {
static {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Connection getConnection() {
Connection con = null;
String url = "jdbc:mysql://127.0.0.1:3306/test";
String userName = "root";
String pwd = "root";
try {
con = DriverManager.getConnection(url, userName, pwd);
} catch (SQLException e) {
e.printStackTrace();
}
return con;
}
public ResultSet getKeyWord(String key){
String sql = "select name from google where name like \""+key+"%\"";
System.out.println(sql);
Connection con = getConnection();
ResultSet rs =null;
Statement stm = null;
try {
stm = con.createStatement();
rs = stm.executeQuery(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return rs;
}
}
方法getKeyWord通过传递过来的关键字,实现模糊查询。最终返回rs对象,后边的Action类调用时,会将这个结果集
对象rs转换为list对象,然后让前台的Javascript调用输出结果。
其中,表google创建语句如下:
create table google(id int primary key auto_increament,name varchar(32) not null);
插入测试的数据:
insert into google(name) values("aaa");
insert into google(name) values("bbb");
insert into google(name) values("ccc");
insert into google(name) values("abc");
insert into google(name) values("aredsc");
insert into google(name) values("sieln");
insert into google(name) values("aba");
private static final long serialVersionUID = 1L;
public List getName(String key) throws SQLException {
Db db = new Db();
ResultSet rs = db.getKeyWord(key);
List list = new ArrayList();
ResultSetMetaData md = rs.getMetaData();
int columnCount = md.getColumnCount(); // Map rowData;
while (rs.next()) {
Map rowData = new HashMap();
for (int i = 1; i <= columnCount; i++) {
rowData.put(md.getColumnName(i), rs.getObject(i));
}
list.add(rowData);
}
return list;
}
}
KeyAction.java主要的作用是调度到层的Db.java类,获取数据库查询的结果集并将结果集转换成list对象,通过
dwr以供JavaScript调用。并使用Jquery显示。可以看出这个Action提供了一个getName方法,它根据参数(这个参
数是视图页面中通过JavaScript传入的)做查询并将结果集转换为list对象返回。