系统的流程图如图(5-3):
开 始
创建监听线程
是否有用户连接?
根据不同的端口号创建不同的服务线程 该服务线程接收用户的SQL请求进行数据库操作 根据不同的端口号创建不同的服务线程 该服务线程接收用户的SQL请求进行数据库操作
对结果集进行处理
再将数据库操作的结果经过SOCKET送给客户程序 此线程结束
相应的程序模块介绍如下:
1.创建一个线程,此线程创建一个套接字(SOCKET)对象,用于监听客户端的连接,可以为其指定一个端口号,此处是4700(可以任意,只要不与系统正在使用的冲突即可)。
connect c=new connect();
c.start();
Public class connect extends Thread{
public void run(){
try{
int i=0;
//创建套接字对象,端口号4700,监听用户的连接请求
ServerSocket server = new ServerSocket(4700);
System.out.println("Listening Port 4700........");
Socket client ;
//循环监听,等待客户的连接,收到用户的连接请求后,
建立SOCKET 对象
while (true){
client = server.accept();
i++;
2.当服务程序在指定的端口监听到客户的请求时,此监听线程将再为具体的服务建立一个新的线程。也就是说,每收到一个客户的请求,就为此客户建立一个新的线程为它服务,这样就做到了多线程、多用户,多个用户可以同时通过WEB服务器访问数据库。
/ /再为此客户的请求建立一个新的线程,由此线程提供具体的服务;
new ActionServerconnect(client).start();
}
}catch(Exception e){
System.out.println("Exception:"+e);
}
3. 为客户服务的线程的具体实现情况如下:服务线程通过数据库驱动程序与数据库建立连接,创建一系列的数据库对象,接收用户传来的SQL语句,进行数据库操作,之后,将操作的结果集进行处理,发送给客户程序,至此一次服务结束。
//线程
class ActionServerconnect extends Thread{
Socket client;
public ActionServerconnect(Socket client){
this.client = client;
}
public void run(){
try{
//用指定的数据库驱动程序jdbc-odbc Bridge,连接数据源
数据源名称: odbc_msora_nt;
String url="jdbc:odbc:odbc_msora_nt";
//加载数据库驱动程序JDBC-ODBC Bridge,与数据库连接时, DRIVER MANAGER 将试图使用此驱动程序;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//建立连接,用DRIVER MANAGER 的getConnection方法建立与URL指定的数据源的连接,若成功则返回一个CONNECTION类的对象,以后对这个数据源的操作都是基于此对象的。
Connection con =DriverManager.getConnection(url,”cimsnt”,”cimsnt”);
checkForWarning(con.getWarnings());
//获得 DatabaseMetaData对象,关于数据源的信息
DatabaseMetaData dma = con.getMetaData();
System.out.println("\n connectdb");
//创建Statement对象,用于查询语句的执行
Statement stmt = con.createStatement();
//执行查询语句,查询的结果返回一个ResultSet类的对象;
ResultSet crs;
crs = stmt.executeQuery("select distinct shebh from SM_T_quansfcd order by shebh");
4. 查询结果的处理。 查询结果都是放在ResultSet的对象中,ResultSet 对象包括一个由查询语句返回的一个表, 这个表中包含所有的查询
<< 上一页 [11] [12] [13] [14] [15] [16] [17] [18] [19] 下一页