1. 问题概述
客户想实现一个类似站内搜索的功能,要求在参数模板查询的文本框里,根据输入的关键字,能够实现基于动态搜索提示,类似百度,google那种,默认取排名前10条信息,支持键盘下移回车等操作,数据来源为数据库表的关键字段.经过一番功夫的整理,详见实例演示.
2. 实例演示一
1.数据的来源以数据库EMPLOYEE表为例,提取所有EMPNAME信息:
2.点击参数模板文本框,自动从数据库提取前10条信息,作为参数查询条件
3.输入关键字,会自动过滤掉不想要的信息.
4. 当输入的关键字,过滤的结果比较多的时候,默认提取排名前10条信息.
5.选择要查询的参数,根据具体参数值查询出相应的结果.
5. 参数模板的设计:
3. 实例演示二
1.在系统站内实现,数据的来源以数据库EMPLOYEE表为例,提取所有EMPNAME信息:
2. 当输入的关键字,过滤的结果比较多的时候,默认提取排名前10条信息. 带结果提示
3. 输入关键字,会自动过滤掉不想要的信息.带结果提示
4. 实例演示三
1.在系统站内实现,数据的来源以数据库EMPLOYEE表为例,提取所有EMPNAME信息:
2. 当输入的关键字,过滤的结果比较多的时候,默认提取排名前10条信息.
3. 输入关键字,会自动过滤掉不想要的信息.
5. 基本实现原理
1.从数据库表提取站内搜索关键字段的信息
2.在参数模板里定义文本框为HTML类型,定义DIV层
3.利用雅虎的javascript搜索及CSS框架,在此基础上对数据进行二次封装
(关于框架可在网上搜索
6. 关键性程序说明
1.执行数据库管理(打开关闭连接,执行增删改查),DBManager.java代码:
package org.xaccp.bar;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DBManager {
public static final String DRIVERNAME =“com.newatlanta.jturbo.driver.Driver”;
public static final String URL = “jdbc:JTurbo://127.0.0.1/DBA/charset=GBK”;
public static final String UID = “sa”;
public static final String PWD = “sa”;
private static DBManager manager = new DBManager();
private Connection conn = null;
public DBManager() {
try {
openConnection();
catch (ClassNotFoundException e) {
e.printStackTrace();
catch (SQLException e) {
e.printStackTrace();
}
}
//单例模式
public static DBManager getInstance() {
return manager;
}
//打开连接
public void openConnection() throws ClassNotFoundException, SQLException {
try {
Class.forName(DRIVERNAME);
conn = DriverManager.getConnection(URLUIDPWD);
catch (Exception e) {
e.printStackTrace();
}
}
//执行增删改
public void executeUpdate(String strSql) throws SQLException {
Statement stat = this.conn.createStatement();
stat.executeUpdate(strSql);
}
//执行查询
public ResultSet executeQuerry(String strSql) throws SQLException {
Statement stat = this.conn.createStatement();
return stat.executeQuery(strSql);
}
//关闭连接
public void closeConnection() throws SQLException {
if (this.conn == null)
return;
if (!(this.conn.isClosed())) {
this.conn.close();
this.conn = null;
}
}
//自行存储过程
public CallableStatement getCallableStatement(St