Mysql教程

22.4 系统实现

本驾校学员管理系统使用Java语言开发,系统开发环境为Eclipse和MyEclipse。本节将向读者介绍本系统的编码实现。

22.4.1 构建工程

首先,在MyEclipse创建一个Web工程,并将这个Web工程取名为DrivingSchool。按照19.1节的内容将JDBC驱动添加到工程中。然后在工程中的src文件下创建两个包 (Package),分别取名为db、servlet。db包下存放连接和处理MySQL数据库的Java类, servlet包下存放着所有的servlet文件。本工程的所有JSP页面都放在WebRoot文件夹下。

22.4.2访问和操作MySQL数据库的代码

在db包下创建DB.java类。这个Java类中封装了5个方法。这些方法分别是onnectMySQL()方法、query()方法、update()方法、execute()方法和 closeDB()方法。onnectMySQL()方法主要用于连接MySQL数据库;query()方法用于执行SELECT语句;update()方法用于执行INSERT语句、UPDATE语句和DELETE语句;execute()方法可以执行所有的SQL语句;closeDB()方法用于关闭数据库对象。下面分别介绍这几个方法的代码。

1. connectMySQL()方法

connectMySQL()方法的作用是连接MySQL数据库。方法中使用Class.forName()声明驱动,使用getConnection()方法创建Connection对象,使用createStatement()方法创建Statement对象。connectMySQL()方法的主要代码如下:

public void connectMySQL() {
String url="jdbc:mysql://59.65.226.15:3306/drivingschooln;             //获取JDBC协议和MySQL端口
String user="root";	                                               //获取数据库的用户名
String passwd="huanghuajin";	                                       //获取密码
try {	//使用try...catch语句捕获异常
Class.forName("com.mysql.jdbc.Driver");	                               //指定 JDBC 驱动
conn = DriverManager.getConnection(url, user, passwd);
//实例化Connection对象
System.out.println("连接数据库服务器成功");                               //输出连接成功的信息
stat=conn.createStatement();	                                       //实例化 Statement 对象
} catch (Exception e) {	                                               //捕获异常
e.printStackTrace();	                                               //输出异常信息
}
}

因为连接MySQL数据库需要JDBC驱动,所以使用Class.forName ()方法指定com.mysql.jdbc.Driver驱动程序。因为本机器的IP地址为59.65.226.15,所以在url中设置 为这个IP地址。MySQL的端口号为3306。连接MySQL后直接登录到drivingschool数据库中,因为驾校学员管理系统的数据都存储在这个数据库下。这个MySQL数据库的root 用户的密码是“huanghuajin”。

2. query()方法

query()方法用于执行SELECT语句。query()方法中是通过调用executeQuery()方法来执行SELECT语句的。执行完SELECT语句后,executeQuery()方法会返回ResultSet对象。 査询结果都存储在ResultSet对象中。因此,query()函数的类型ResultSet()方法的代码如下:

public ResultSet query(String sql) throws SQLException{
if(sql==null||sql.equals("")){	         //判断是否有 SELECT 语句
return null;	                         //如果没有SELECT语句就返回null
}
rs=stat.executeQuery(sql);	             //执行 SELECT 语句
return rs;	                             //返回查询结果rs
}

executeQuery()方法是Statement类中的方法,需要Statement对象来调用。上述代码中, stat为Statement对象,因此,stat可以调用executeQuery()方法执行SELECT语句。

3. update()方法

update()方法用于执行INSERT语句、UPDATE语句和DELETE语句。update()方法中是通过调用executeUpdate()方法来执行这些SQL语句的。执行完SQL语句后, executeUpdate()方法会返回更新的记录数。因此,update()方法的类型为int类型。 executeUpdate()方法的代码如下:

public int update(String sql) throws SQLException{
int i;                                                   //变量i用户存储更新的记录数
if(sql==null ||sql.equals("")){                          //判断是否有更新语句
return 0;                                                //没有更新语句时返回0
}
i=stat.executeUpdate(sql);                               //执行更新语句
return i;                                                //返回更新的记录数
}

executeUpdate()方法也是Statement类中的方法,也需要Statement对象来调用因此,上述代码中也使用stmt来调用executeUpdateO方法。

4. executeSQL()方法

executeSQL()方法既可以执行SELECT语句,也可以执行更新数据的SQL语句。executeSQL()方法调用Statement类中的execute()方法来执行SQL语句。execute()方法执行SELECT语句时返回true,执行其他SQL语句时返回false。

执行SELECT语句后,可以通过getResultSet()方法获取查询结果。因为查询结果存储在ResultSet对象中,所以executeSQL()方法的类型为ResultSet。executeSQL()方法的代码如下:

public ResultSet excute(String sql) throws SQLException{
boolean t;	                                           //定义布尔型变量t
if(sql==null||sql.equals("")){	                       //判断是否有 SELECT 语句
return null;
}
t=stat.excute(sql);	                                   //将excute()方法的返回值赋给 t
//如果t的值为TRUE,则excute()方法中执行了SELECT语句
if(t==true){
rs=stat.getResultSet();	                               //将查询结果赋值给rs
return rs;	                                           //返回 rs
}
//如果t的值不是TRUE,则excute)方法执行了INSERT语句、UPDATE语句或者DELETE语句
else{
int i=stat.getUpdateCount();	                       //获取更新的记录数
System.out.println("更新的记录数是:"+i);	           //输出更新的记录数
return null;	                                       //返回空值
}
}

如果执行SELECT语句,该函数会通过ResultSet对象返回查询结果。如果执行INSERT语句、UPDATE语句和DELETE语句,那么excuteSQL()方法返回null。

5. closeDB()方法

closeDB()方法用于关闭与MySQL数据库有关的对象。这个方法中调用close()方法关闭打开的对象。一般情况下,操作数据库后一定要将打开的对象关闭。closeDB()方法的代码如下:

public void closeDB() throws SQLException{
if(rs!=null){	                                       //判断ResultSet对象是否为空
rs.close();	                                           //关闭 ResultSet 对象
rs=null;
}
if(stat!=null){	                                       //判断Statement对象是否为空
stat.close();	                                        //关闭Statement对象
stat=null;
}
if(conn!=null){	                                       //判断Connection对象是否为空
conn.close();	                                       //关闭Connection对象
conn=null;
}

closeDB()方法中调用close()方法关闭了ResultSet、Statement对象和Connection对象,并且将它们的值赋为null。

DB.java类的大部分代码与19.5节中的mysqljava类中的代码相同,只有部分代码有所差异。如果读者想了解更多Java连接和操作MySQL数据库的方法,请参照第19章的内容。

关注微信获取最新动态