使用JDBC连接数据库(MySQL)的源代码

文章目录

  • JDBC 访问数据库的步骤
  • 使用 JDBC 访问数据库的演示代码
    • 使用 PreparedStatement 对象
      • 查询
      • 插入
      • 更新
      • 删除
    • 使用 Statement 对象
      • 查询
      • 删除

JDBC 访问数据库的步骤

  1. 将 jdbc 驱劢程序相关的 jar 包 copy 到 WEB-INF/lib 下
  2. 在 servlet 代码当中,使用 jdbc 访问数据库,要注意如何处理异常
  3. 配置错误处理页面

使用 JDBC 访问数据库的演示代码

使用 PreparedStatement 对象

查询

public class LoadEmpServlet extends HttpServlet { public void service(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException {long id = Long.parseLong(request.getParameter("id"));// 访问数据库 Connection conn = null; try {Class.forName("com.mysql.jdbc.Driver");conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jd1109db2", "root","root");PreparedStatement prep = conn.prepareStatement("select * from t_emp where id = ?");prep.setLong(1, id);ResultSet rst = prep.executeQuery(); response.setContentType("text/ htm l;charset=utf-8"); PrintWriter out = response.getWriter();if (rst.next()) {String name = rst.getString("name");double salary = rst.getDouble("salary");int age = rst.getInt("age");out.println("<form action='modify?id=" + id + "' method='post'>");out.println("id:" + id + "<br/>");out.println("姓名:<input name='name' value='" +name + "'/><br/>"); out.println("薪水:<input name='salary' value='" +salary + "'/><br/>"); out.println("年龄:<input name='age' value='" + age + "'/><br/>");out.println("<input type='submit' " + "value='确认'/>");out.println( "</form>");out.close();} } catch (Exception e) {e.printStackTrace();throw new ServletException(e); } finally {if(conn!=null) { try {conn.close();} catch (SQLException e) {e.printStackTrace(); }} }}
}

插入

public class AddEmpServlet extends HttpServlet {public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException { //这行代码要放在 getParameter()执行之前request.setCharacterEncoding("utf-8");String name = request.getParameter("name");double salary = Double.parseDouble(request.getParameter("salary"));int age = Integer.parseInt(request.getParameter("age")); System.out.println("name:" + name);System.out.println("salary:" + salary); System.out.println("age:" + age);//访问数据库 Connection conn = null; try {Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jd1109db2", "root","root");PreparedStatement prep = conn.prepareStatement("insert into t_emp(name,salary,age) values(?,?,?)");prep.setString(1, name);prep.setDouble(2, salary); prep.setInt(3, age); prep.executeUpdate();response.setContentType("text/html;charset=utf-8");PrintWriter out = response.getWriter(); out.println( "添加雇员成功");out.close();} catch (Exception e) {e.printStackTrace();throw new ServletException(e); } finally {if(conn!=null) { try {conn.close();} catch (SQLException e) {e.printStackTrace();} }}}
}

更新

public class ModifyEmpServlet extends HttpServlet { public void service(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException { 		request.setCharacterEncoding("utf-8"); long id = Long.parseLong(request.getParameter("id")); String name = request.getParameter("name"); double salary = Double.parseDouble(request.getParameter("salary"));int age = Integer.parseInt(request.getParameter("age"));// 访问数据库Connection conn = null; try {Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/jd1109db2","root","root");PreparedStatement prep = conn.prepareStatement("update t_emp " +"set name=?,salary=?,age=? " + "where id=?");prep.setString(1, name);prep.setDouble(2, salary); prep.setLong(3, age); prep.setLong(4, id); prep.executeUpdate();response.sendRedirect("list"); } catch (Exception e) {e.printStackTrace();throw new ServletException(e); } finally {if(conn!=nul l) { try {conn.close();} catch (SQLException e) { e.printStackTrace();}} }}}

删除

public class DelEmpServlet extends HttpServlet {public void service(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException {long id = Long.parseLong(request.getParameter("id"));Connection conn = null;// 访问数据库try {Class.forName("com.mysql.jdbc.Driver");conn = DriverManager .getConnection("jdbc:mysql://localhost:3306/jd1109db2","root","root");PreparedStatement prep = conn.prepareStatement("delete from t_emp where id = ?"); prep.setLong(1, id);prep.executeUpdate();//重定向 response.sendRedirect("list");} catch (Exception e) { //step1 先记录日志e.printStackTrace(); //step2 抛出throw new ServletException(e); } finally {if(conn!=nul l) { try {conn.close();} catch (SQLException e) { e.printStackTrace();}} }}}

使用 Statement 对象

查询

利用 JDBC 访问数据库 , 显示所有雇员信息

public class ListEmpServlet extends HttpServlet{public void service(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException {//访问数据库 Connection conn = null; try {Class.forName("com.mysql.jdbc.Driver");conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jd1109db2","root","root"); Statement stat = conn.createStatement();ResultSet rst = stat.executeQuery("select * from t_emp");//使用查询得到的结果,生成一个表格 response.setContentType("text/html;charset=utf-8"); PrintWriter out = response.getWriter(); out.println("<table border='1' " + "width='60%' " +"cellpadding='0' " +"cellspacing='0'>");out.println("<tr>" +"<td>id</td>" + "<td>姓名</td>" +"<td>薪水</td>" + "<td>年龄</td></tr>");while (rst.next()) {long id = rst.getLong("id");String name = rst.getString("name");double salary = rst.getDouble("salary");int age = rst.getInt("age");out.println("<tr><td>" + id + "</td><td> " + name + "</td><td>" + salary + "</td><td> " + age + "</td></tr>");}out.println( "</table>");out.close();} catch (Exception e) { e.printStackTrace();throw new ServletException(e);} finally { if(conn!=nul l) {try {conn.close();} catch (SQLException e) {e.printStackTrace(); }} }}}

删除

待续

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/334565.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

popupwindow 不抢夺焦点_央视专访“上个厕所就要3000块”的亲历者, 被“坑”的不愉快经历...

资讯 聚焦 活动 宣传 推广 品牌 热文 找小编合作加个人微信2871001801百度百科&#xff1a;宁河于雍正九年(1731年)从宝坻县分出,据《河北省县名考原》称:“蓟运河纵贯县境,时多水患,故县以宁河名”!当然还有另外别的解释!民国三年(1914年)属直隶省津海道,民国十七年(1928年…

gitlab10.x迁移_1.x到2.x的迁移:可观察与可观察:RxJava FAQ

gitlab10.x迁移标题不是错误。 rx.Observable 1.x的io.reactivex.Observable与2.x的io.reactivex.Observable完全不同。 盲目升级rx依赖关系并重命名项目中的所有导入将进行编译&#xff08;稍作更改&#xff09;&#xff0c;但不能保证相同的行为。 在项目的早期&#xff0c; …

ubuntu安装与配置mysql_ubuntu下mysql的安装与配置

安装MySQL sudo apt-get install mysql-server 这个应该很简单了&#xff0c;而且我觉得大家在安装方面也没什么太大题目&#xff0c;所以也就未几说了&#xff0c;下面我们来讲讲配置。 配置MySQL 留意&#xff0c;在Ubuntu下MySQL缺省是只安装MySQLsudo apt-get install mysq…

Servlet 处理多种请求应用

一个 Servlet 如何处理多种请求? 1.使用后缀匹配模式 2.在 service 方法中获取请求资源路径&#xff0c;分析资源路径来决定作何处理 示例代码如下&#xff1a; package priv.lwx.javaex.web_demo_02.web.servlet;import javax.servlet.http.HttpServlet; import javax.serv…

小程序搜索框_微信小程序搜索及优化相关知识科普

生活中我们常常会用到微信小程序&#xff0c;但很多人不知道该如何搜索、找到小程序&#xff1b;而有些已经做了自己的小程序的商家&#xff0c;也不懂怎么提升自己的微信小程序搜索效果。所以下面就跟大家科普下这两个问题。1.怎么搜索微信小程序打开微信&#xff0c;点击右上…

java 函数式编程 示例_功能Java示例 第1部分–从命令式到声明式

java 函数式编程 示例功能编程&#xff08;FP&#xff09;的目的是避免重新分配变量&#xff0c;避免可变的数据结构&#xff0c;避免状态并全程支持函数。 如果将功能性技术应用于日常Java代码&#xff0c;我们可以从FP中学到什么&#xff1f; 在这个名为“ Functional Java …

su联合推拉插件_[实习小记一一SU建模]

鉴于本菜鸡在实习阶段一直在SU建模&#xff0c;那就讲讲我在SU建模的心路历程吧。本菜鸡之前还是SU小白时(俗称白斩鸡&#xff0c;并且现在也很白)&#xff0c;只会死命地用推拉。来到公司初探SU,第一个高层建筑便花费我半个月的时间(我突然想起有一篇日记特别好笑我是个SU人&a…

Linux 命令之 tar 命令-打包和备份的归档工具(附压缩/解压工具)

文章目录一、命令介绍二、命令语法三、常用选项四、命令示例&#xff08;一&#xff09;对指定的目录进行打包&#xff08;即备份归档&#xff09;&#xff0c;不压缩&#xff08;二&#xff09;对指定目录下的内容&#xff08;不含目录本身&#xff09;进行打包&#xff08;即…

纹理和基元_通过粘性仙人掌基元进行延迟加载和缓存

纹理和基元您显然知道什么是延迟加载 &#xff0c;对吗&#xff1f; 而且您无疑知道缓存 。 据我所知&#xff0c;Java中没有一种优雅的方法来实现它们中的任何一个。 这是我在Cactoos原语的帮助下为自己找到的。 Matteo Garrone的《 Reality》&#xff08;2012年&#xff09;…

oracle 造数据脚本_Oracle数据库shell脚本--统计所有数据库用户信息及明细

概述今天主要分享一下两个shell脚本&#xff0c;主要是为了查看所有数据库用户及其表空间&#xff0c;统计某个指定用户的明细&#xff0c;下面一起来看看吧~数据库连接脚本use script settdb.sh for DB login details registry#!/bin/bashtmp_username$SH_USERNAMEtmp_passwor…

学维修电脑要多久_学厨师要多久才出师

学厨师一般要学多久&#xff1f;以苏州新东方学厨师为例&#xff1a;厨师培训可以分为长期、短期。中餐、西餐、西点长期专业学习时间1-3年不等&#xff1b;短期专业从7天到8个月不等&#xff0c;主要是按学习内容来划分&#xff0c;比如学苏式汤面&#xff0c;只需要半个月左右…

Linux 命令之 rpm -- RPM 软件包的管理工具

文章目录一、命令介绍二、语法结构三、常用选项用于查询和检查包用于安装、升级和删除包用于执行其他功能四、命令示例&#xff08;一&#xff09;查询和检查包1. 查看一个已安装包的信息&#xff08;版本、用途等&#xff09;2. 查看与指定程序相关的所有安装文件3. 查看一个已…

react核心虚拟dom_使用虚拟时间测试基于时间的React堆核心流

react核心虚拟domReactor Core实现了Reactive Streams规范&#xff0c;并处理了&#xff08;可能无限的&#xff09;数据流。 如果您感兴趣&#xff0c;请查看它提供的出色文档 。 在这里&#xff0c;我假设对Reactor Core库的Flux和Mono类型有一些基本的了解&#xff0c;并且将…

图书管理系统python语言-Python简易版图书管理系统

本文实例为大家分享了python图书管理系统的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下 """ 图书管理系统 """ import random # books{书名:剩余数量, 书名:剩余数量} import time books {"防脱发指南": 5, "颈椎康…

docker 打包mysql_基于docker部署mysql的数据持久化问题

本人最近在使用docker部署mysql时&#xff0c;在持久化mysql数据时遇到了一个有趣的问题&#xff0c;将排查过程及思考记录在这里&#xff0c;以备后查。先简单描述下我遇到的问题&#xff1a;在mysql容器中创建了两个数据库&#xff0c;然后使用docker commit想要保存容器的修…

Linux 命令之 ls -- 列出指定目录下的内容

文章目录一、命令介绍二、语法格式三、常用选项四、参考示例&#xff08;一&#xff09;显示工作目录下&#xff08;当前目录&#xff09;所有的文件和目录&#xff08;二&#xff09;显示工作目录下所有的文件和目录&#xff08;三&#xff09;显示文件的详细信息&#xff0c;…

kotlin dsl_Spring Webflux – Kotlin DSL –实现的演练

kotlin dsl在以前的博客文章中&#xff0c;我描述了Spring Web Framework中的响应式编程支持Spring Webflux如何使用基于Kotlin的DSL使用户能够以非常直观的方式描述路由。 在这里&#xff0c;我想探索一些底层实现。 描述一组端点的样本DSL看起来像这样&#xff1a; package…

cad调了比例因子没反应_「室内设计」大神们都在用的9个CAD制图技巧,你会用几个?...

1、快捷特性面板如何调取&#xff1f;2、 如何快速恢复上一次删除物体&#xff1f;3、 如何快速关闭监视注释器&#xff1f;4、如何快速处理重复碎线&#xff1f;5、如何解决虚线在模型空间和布局空间显示不一致的问题&#xff1f;6、 如何快速更改图块名称&#xff1f;7、 PL线…

ubuntu 12下的apache+php+mysql_老司机传授Ubuntu下Apache+PHP+MySQL环境搭建攻略

一、首先安装MySql&#xff1a;对于MySql来讲在整个过程中是相对独立的安装&#xff0c;并且我的ubuntu在以前做开发的时候就已经安装了MySql&#xff0c;所以以下只给出安装步骤&#xff1a;1、安装MySql的服务&#xff1a;sudo apt-get install mysql-server要注意的是安装过…

Linux 命令之 mv -- 移动文件/重命名文件

文章目录命令介绍语法格式常用选项命令示例&#xff08;一&#xff09;文件重命名&#xff08;二&#xff09;目录重命名&#xff08;三&#xff09;移动目录&#xff08;四&#xff09;移动目录且重命名&#xff08;五&#xff09;将一个目录下的内容移动到另外一个目录下&…