上一篇讲解了Tomcat的安装以及配置,本篇讲解查询系统中核心部分,数据库链接以及查询操作的实现。
由于数据库操作部分为java而非HTML/javascript,所以需要在页面开头处写入以下代码。
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%> <%@ page import="java.sql.Connection" import="java.sql.ResultSet" import="java.sql.SQLException" import="java.sql.Statement" %> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>
在HTML页面中嵌入java代码需要用<% %>包裹起来,上述代码的功能是引入java关于数据库操作的库。
一般查询操作页面虽然也以.jsp后缀名保存,但不显示在前台。并且页面中几乎都为java代码,所以HTML代码部分可省略至仅保留两个标签。
接下来讲解链接数据库以及进行查询、显示操作的java代码。
Connection con; Statement stmt; ResultSet rs;
声明后面会使用的变量。否则会出错。
为了保证代码能处理异常,需要引入try/catch结构,如下图所示。
try{ out.println('all is well'); } catch(Exception e){out.println(e.getMessage());}
引入Oracle的jdbc驱动,并取得所连接到的数据库的url,数据库名称,登录用户名以及密码。其中url信息可在本机Oracle安装文件夹下找到。
Class.forName("oracle.jdbc.driver.OracleDriver"); java.sql.DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); String dbUrl="jdbc:oracle:thin:@1.1.1.1:1521:dbl"; String dbUser="god"; String dbPwd="god"; con=java.sql.DriverManager.getConnection(dbUrl,dbUser,dbPwd); stmt=con.createStatement();
本身开发的这个信息查询系统是关于ipv4地址信息的,输入一个ip地址,输出数据库中若干个表中的isp信息,省市信息。其中ip地址只需要输入前三段,因数据库中的ip地址最后一段均为1,对传入的ipname进行字符串处理以其为条件进行查询操作。
String ipname = request.getParameter("ip_name"); ipname += ".1"; out.println(" "); //插入一个空行 out.println(""); out.println("");
ipname为查询界面传出的ip地址字符串。随即输出表格的HTML代码。表格的其他参数由下列代码在head标签中定义,使用css代码而非html代码对其进行修饰。
最后为查询操作与打印表格的代码,使用较为简单的sql语句即可完成多表的查询,即一条语句查询一个表,需要注意的是sql查询语句为字符串,其变量名需要因查询的表不同而不同,否则会报错。
另外sql查询为空时会返回null值,需要对其进行处理变为空格。
表格打印完毕后关闭与数据库的链接并销毁变量。
//A数据库 String sqla="select * from A where ip="+"'"+ipname+"'"; rs=stmt.executeQuery(sqla); //rs为sql查询后获得的列表 while(rs.next()) { String col1="A库"; String col2=rs.getString(2); String col3=rs.getString(4); String col4=rs.getString(6); out.println(""); } //B数据库 String sqlb="select * from B where ip="+"'"+ipname+"'"; rs=stmt.executeQuery(sqlb); while(rs.next()) { String col1="B库"; String col2=rs.getString(2); String col3=rs.getString(3); if (col3 == null) col3 = " "; String col4=" "; out.println(""); } out.println("
数据源 | 省份 | 城市 | ISP |
"+col1+" | "+col2+" | "+col3+" | "+col4+" |
"+col1+" | "+col2+" | "+col3+" | "+col4+" |
整个流程可类比一个冷笑话“如何将大象装进冰箱”,打开冰箱——装进大象——关上冰箱。本例中链接的数据库是Oracle,对于MySQL也是类似的过程与代码,只需要更改jdbc驱动部分的代码即可。