本教程假定您已经了解了 JDBC 应用程序的工作方式。

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

创建测试数据

接下来我们在 MySQL 中创建 RUNOOB 数据库,并创建 websites 数据表,表结构如下:

CREATE TABLE `websites` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` char(20) NOT NULL DEFAULT '' COMMENT '站点名称',`url` varchar(255) NOT NULL DEFAULT '',`alexa` int(11) NOT NULL DEFAULT '0' COMMENT 'Alexa 排名',`country` char(10) NOT NULL DEFAULT '' COMMENT '国家',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

插入一些数据:

INSERT INTO `websites` VALUES ('1', 'Google', 'https://www.google.cm/', '1', 'USA'), ('2', '淘宝', 'https://www.taobao.com/', '13', 'CN'), ('3', '菜鸟教程', 'http://www.runoob.com', '5892', ''), ('4', '微博', 'http://weibo.com/', '20', 'CN'), ('5', 'Facebook', 'https://www.facebook.com/', '3', 'USA');

数据表显示如下:

访问数据库

下面的实例演示了如何使用 Servlet 访问 RUNOOB 数据库。

package com.runoob.test;import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/*** Servlet implementation class DatabaseAccess*/
@WebServlet("/DatabaseAccess")
public class DatabaseAccess extends HttpServlet {private static final long serialVersionUID = 1L;// JDBC 驱动名及数据库 URLstatic final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  static final String DB_URL = "jdbc:mysql://localhost:3306/RUNOOB";// 数据库的用户名与密码,需要根据自己的设置static final String USER = "root";static final String PASS = "123456"; /*** @see HttpServlet#HttpServlet()*/public DatabaseAccess() {super();// TODO Auto-generated constructor stub}/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {Connection conn = null;Statement stmt = null;// 设置响应内容类型response.setContentType("text/html;charset=UTF-8");PrintWriter out = response.getWriter();String title = "Servlet Mysql 测试 - 菜鸟教程";String docType = "<!DOCTYPE html>\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, name, url FROM websites";ResultSet rs = stmt.executeQuery(sql);// 展开结果集数据库while(rs.next()){// 通过字段检索int id  = rs.getInt("id");String name = rs.getString("name");String url = rs.getString("url");// 输出数据out.println("ID: " + id);out.println(", 站点名称: " + name);out.println(", 站点 URL: " + url);out.println("<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();}}}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}
}

现在让我们来编译上面的 Servlet,并在 web.xml 文件中创建以下条目:

....<servlet><servlet-name>DatabaseAccess</servlet-name><servlet-class>com.runoob.test.DatabaseAccess</servlet-class></servlet><servlet-mapping><servlet-name>DatabaseAccess</servlet-name><url-pattern>/TomcatTest/DatabaseAccess</url-pattern></servlet-mapping>
....

现在调用这个 Servlet,输入链接:http://localhost:8080/TomcatTest/DatabaseAccess,将显示以下响应结果:

Servlet 数据库访问相关推荐

  1. spring配置druid连接池和监控数据库访问性能

    Druid连接池及监控在spring配置如下: [html] view plaincopy <bean id="dataSource" class="com.ali ...

  2. 效果很好的asp.net的数据库访问模型(优化,封装一体化)

    效果很好的asp.net的数据库访问模型(优化,封装一体化) 非常有效的数据库/配置文件访问模型.成功使用在几万流量的网站上.任何建议欢迎大家交流. 在使用SqlCommand对象过程中,我们需要分配 ...

  3. 数据访问层之数据库访问设计(转)

    在PetShop中,系统需要处理的数据库对象分为两类:一是数据实体,对应数据库中相应的数据表.它们没有行为,仅用于表现对象的数据.这些实体类都被放到Model程序集中,例如数据表Order对应的实体类 ...

  4. java通用库,java数据库访问通用种

    java数据库访问通用类; package org.studentmanager.commons; /** * java数据库访问通用类; * @author clplain; * */ import ...

  5. 【ASP.NET开发】ASP.NET对SQLServer的通用数据库访问类

    怎么说呢,作为程序员,我们明天都应该学习新的知识. 以前我在对数据库进行操作的时候都是在同一页面对数据库进行操作.这样的话,就是操作繁琐,而且需要重复的书写对数据库操作的代码,这样不仅浪费了很多的时间 ...

  6. 如何建立JSP操作用以提高数据库访问效率

    从服务器端促进程序快速开发的java Server Pages (jsp)决定它成为一种广为流行的工具.虽然呆板的一面仍然存在,然而无论它包含多少缺点,JSP能够为Web程序设计者提供很多东西,尤其是 ...

  7. C# SQLite数据库 访问封装类

    在客户端配置文件<configuration>节点下,添加: <connectionStrings><add name="localdb" conne ...

  8. Xamarin SQLite教程数据库访问与生成

    Xamarin SQLite教程数据库访问与生成 在本教程中,我们将讲解如何开发SQLite相关的App.在编写程序前,首先需要做一些准备工作,如了解Xamarin数据库访问方式,添加引用,构建使用库 ...

  9. sql service 从创建访问用户到数据库访问 【SQL】

    create login [LoginMame] with password=[Pwd] --创建数据库登陆用户 create user [DBLoginName] for login [LoginM ...

最新文章

  1. “智慧城市”建设中的金融力量
  2. git 多仓库源 配置
  3. android java和c混合编程_C/C++在Java项目、Android和Objective-C三大平台下实现混合编程...
  4. 论文浅尝 | 知识图谱问答中的层次类型约束主题实体识别
  5. 关于数据仓库的架构及3大类组件工具选型
  6. 如何使用intellij搭建spark开发环境(下)
  7. SAP License:SAP软件功能有哪些?
  8. 最佳学习方法(11)评价自己的学习
  9. 大学课程 | 《计算机系统结构》详细知识点总结
  10. string函数使用---复制子字符串(含substr用法)
  11. 火狐浏览器丢失书签,恢复无法处理备份文件的解决方案
  12. Linux efi分区被删除了,如何恢复意外删掉的EFI系统分区
  13. 打印机是共享的计算机显示脱机,win7系统连接网络共享打印机时出现脱机提示如何解决【图文】...
  14. 130个物联网示范项目上榜!工信部权威发布
  15. App应用字体大小保持固定以及关于Configuration的变化
  16. 果糖SAAS开源社交电商小程序,全开源,无加密
  17. Wireshark配置显示IP地理位置信息
  18. 宜信漏洞管理平台--洞察搭建
  19. php注册 用cdn,国外免费CDN加速及防护:CloudFlare注册使用教程
  20. 【C++】C++标准库之iomanip库(格式输入输出)

热门文章

  1. HTK下yes/no的识别
  2. DIY(也即Build Your Own) vSAN时,选择SSD需要注意的事项
  3. 虚拟机vCPU和vNUMA调整大小-经验法则
  4. Git学习总结(23)——Git commit message和版本管理规范总结
  5. 数人云CTO解读Docker 1.12和金融业容器化
  6. 互联网推送服务原理:长连接+心跳机制(MQTT协议)
  7. 软件路由测试,软路由测试
  8. aliyun gradle 代理_android studio gradle国内代理设置
  9. 百度的一道 java 高频面试题的多种解法
  10. 一图读懂|H3C SecPath ACG1050-X1应用控制网关