您的位置:首页 > 数据库

Servlet 数据库访问

2016-07-02 18:54 423 查看
本教程假定您已经了解了 JDBC 应用程序的工作方式。在您开始学习 Servlet 数据库访问之前,请确保您已经有适当的 JDBC 环境设置和数据库。

从基本概念下手,让我们来创建一个简单的表,并在表中创建几条记录。


创建数据库表

在测试数据库 TEST 中创建 Employees 表,请按以下步骤进行:


步骤 1:

打开命令行提示符(Command Prompt),并更改进入到安装目录,如下所示:
C:\>
C:\>cd Program Files\MySQL\bin
C:\Program Files\MySQL\bin>


步骤 2:

登录到数据库,如下所示:
C:\Program Files\MySQL\bin>mysql -u root -p
Enter password: ********
mysql>


步骤 3:

在测试数据库 TEST 中创建 Employee 表,如下所示:
mysql> use TEST;
mysql> create table Employees
(
id int not null,
age int not null,
first varchar (255),
last varchar (255)
);
Query OK, 0 rows affected (0.08 sec)
mysql>


创建数据记录

最后,在 Employee 表中创建几条记录,如下所示:
mysql> INSERT INTO Employees VALUES (100, 18, 'Zara', 'Ali');
Query OK, 1 row affected (0.05 sec)

mysql> INSERT INTO Employees VALUES (101, 25, 'Mahnaz', 'Fatma');
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO Employees VALUES (102, 30, 'Zaid', 'Khan');
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO Employees VALUES (103, 28, 'Sumit', 'Mittal');
Query OK, 1 row affected (0.00 sec)

mysql>


访问数据库

下面的实例演示了如何使用 Servlet 访问 TEST 数据库。
// 加载必需的库
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;

public class DatabaseAccess extends HttpServlet{

public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
// JDBC 驱动器名称和数据库的 URL
static final String JDBC_DRIVER="com.mysql.jdbc.Driver";
static final String DB_URL="jdbc:mysql://localhost/TEST";

//  数据库的凭据
static final String USER = "root";
static final String PASS = "password";

// 设置响应内容类型
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String title = "数据库结果";
String docType =
"<!doctype html public \"-//w3c//dtd html 4.0 " +
"transitional//en\">\n";
out.println(docType +
"<html>\n" +
"<head><title>" + title + "</title></head>\n" +
"<body bgcolor=\"#f0f0f0\">\n" +
"<h1 align=\"center\">" + title + "</h1>\n");
try{
// 注册 JDBC 驱动器
Class.forName("com.mysql.jdbc.Driver");

// 打开一个连接
conn = DriverManager.getConnection(DB_URL,USER,PASS);

// 执行 SQL 查询
stmt = conn.createStatement();
String sql;
sql = "SELECT id, first, last, age FROM Employees";
ResultSet rs = stmt.executeQuery(sql);

// 从结果集中提取数据
while(rs.next()){
// 根据列名称检索
int id  = rs.getInt("id");
int age = rs.getInt("age");
String first = rs.getString("first");
String last = rs.getString("last");

// 显示值
out.println("ID: " + id + "<br>");
out.println(", Age: " + age + "<br>");
out.println(", First: " + first + "<br>");
out.println(", Last: " + last + "<br>");
}
out.println("</body></html>");

// 清理环境
rs.close();
stmt.close();
conn.close();
}catch(SQLException se){
// 处理 JDBC 错误
se.printStackTrace();
}catch(Exception e){
// 处理 Class.forName 错误
e.printStackTrace();
}finally{
// 最后是用于关闭资源的块
try{
if(stmt!=null)
stmt.close();
}catch(SQLException se2){
}// 我们不能做什么
try{
if(conn!=null)
conn.close();
}catch(SQLException se){
se.printStackTrace();
}//end finally try
} //end try
}
}


现在让我们来编译上面的 Servlet,并在 web.xml 文件中创建以下条目:
....
<servlet>
<servlet-name>DatabaseAccess</servlet-name>
<servlet-class>DatabaseAccess</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>DatabaseAccess</servlet-name>
<url-pattern>/DatabaseAccess</url-pattern>
</servlet-mapping>
....


现在调用这个 Servlet,输入链接:http://localhost:8080/DatabaseAccess,将显示以下响应结果:
数据库结果
ID: 100, Age: 18, First: Zara, Last: Ali
ID: 101, Age: 25, First: Mahnaz, Last: Fatma
ID: 102, Age: 30, First: Zaid, Last: Khan
ID: 103, Age: 28, First: Sumit, Last: Mittal


转自:http://www.runoob.com/servlet/servlet-database-access.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: