Java面向对象程序设计第14章JDBC数据库操作
- 格式:ppt
- 大小:2.47 MB
- 文档页数:24
Java数据库连接:JDBC的基本使用与优化技巧引言:在当今信息化时代,数据库的应用已经无处不在。
而作为Java开发者,我们经常需要与数据库进行交互,以实现数据的存储、检索和处理。
Java数据库连接(JDBC)是一种用于在Java应用程序和数据库之间建立连接的API。
本文将介绍JDBC的基本使用和一些优化技巧,以帮助读者更好地理解和应用JDBC。
一、JDBC的基本使用1. 导入JDBC相关的包在使用JDBC之前,我们首先需要导入相关的包。
在Java中,JDBC相关的类和接口位于java.sql和javax.sql包中。
我们可以通过以下语句导入这些包:import java.sql.*;import javax.sql.*;2. 加载数据库驱动程序在使用JDBC之前,我们需要加载数据库驱动程序。
不同的数据库有不同的驱动程序,我们需要根据使用的数据库选择合适的驱动程序。
例如,如果我们使用的是MySQL数据库,可以通过以下语句加载MySQL的驱动程序:Class.forName("com.mysql.jdbc.Driver");3. 建立数据库连接加载驱动程序后,我们可以通过以下语句建立与数据库的连接:Connection connection = DriverManager.getConnection(url, username, password);其中,url是数据库的URL,username是用户名,password是密码。
连接成功后,我们可以通过Connection对象执行SQL语句。
4. 执行SQL语句在JDBC中,我们可以通过Statement对象执行SQL语句。
例如,我们可以通过以下语句执行一个查询语句:Statement statement = connection.createStatement();ResultSet resultSet = statement.executeQuery("SELECT * FROM table_name");其中,table_name是要查询的表的名称。
Java-jdbc-封装类形式的数据库操作1、建⽴数据库连接的类package cn.bruce.MySql;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class Conutils {//创建数据库连接的⼯具类private static Connection con=null;static{String usename = "root";String password = "jinqi1986";String url = "jdbc:mysql://localhost:3306/mytrain?useSSL=false&serverTimezone=CTT";String jdbc = "com.mysql.cj.jdbc.Driver";try{Class.forName(jdbc);con = DriverManager.getConnection(url, usename, password);} catch (Exception e){throw new RuntimeException(e + "数据库连接失败!");}}public static Connection recon() {return con;}//创建数据库关闭的⼯具类(查询)public static void close(Connection con,Statement st,ResultSet rs){if (rs!=null){try{rs.close();} catch (SQLException e){e.printStackTrace();}}if (st!=null){try{st.close();} catch (SQLException e){e.printStackTrace();}}if (con!=null){try{con.close();} catch (SQLException e){e.printStackTrace();}}}//创建数据库关闭的⼯具类(⾮查询)public static void close(Connection con,Statement st){if (st!=null){try{st.close();} catch (SQLException e){e.printStackTrace();}}if (con!=null){try{con.close();} catch (SQLException e){e.printStackTrace();}}}}2、建⽴存放集合的封装类package cn.bruce.MySql;public class sort {private int zid;private String zname;private double zprice;private String zdesc;// 有参构造器public sort(int zid, String zname, double zprice, String zdesc){// 依照数据库⾥的表字段类型创建this.zid = zid;this.zname = zname;this.zprice = zprice;this.zdesc = zdesc;}// ⽆参构造器public sort(){}// get/set⽅法public int getZid() {return zid;}public void setZid(int zid) {this.zid = zid;}public String getZname() {return zname;}public void setZname(String zname) {this.zname = zname;}public double getZprice() {return zprice;}public void setZprice(double zprice) {this.zprice = zprice;}public String getZdesc() {return zdesc;}public void setZdesc(String zdesc) {this.zdesc = zdesc;}// 重写toStringpublic String toString() {return "sort [zid=" + zid + ", zname=" + zname + ", zprice=" + zprice + ", zdesc=" + zdesc + "]"; }}3、建⽴main类package cn.bruce.MySql;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.util.ArrayList;import java.util.List;public class useutli {public static void main(String[] args) throws Exception {// 调⽤数据库连接的⼯具类Connection connection = Conutils.recon();String sql = "select * from test;";PreparedStatement ps = connection.prepareStatement(sql);ResultSet rs = ps.executeQuery();// 建⽴泛型-sort类型list集合List<sort> list = new ArrayList<sort>();while (rs.next()){sort s = new sort(rs.getInt("zid"), rs.getString("zname"), rs.getDouble("zprice"), rs.getString("zdesc")); list.add(s);}Conutils.close(connection, ps, rs);// 遍历 listfor (sort s : list){System.out.println(s);}}}。
本文主要介绍了使用Java创建一个以JDBC连接数据库的程序需要的7个步骤。
AD:JDBC连接数据库◆创建一个以JDBC连接数据库的程序,包含7个步骤:1、加载JDBC驱动程序:在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),这通过ng.Class类的静态方法forName(String className)实现。
例如:1.try{2.//加载MySql的驱动类3.Class.forName(".mysql.jdbc.Driver") ;4.}catch(ClassNotFoundException e){5.System.out.println("找不到驱动程序类,加载驱动失败!");6. e.printStackTrace() ;7.}成功加载后,会将Driver类的实例注册到DriverManager类中。
2、提供JDBC连接的URL◆连接URL定义了连接数据库时的协议、子协议、数据源标识。
◆书写形式:协议:子协议:数据源标识协议:在JDBC中总是以jdbc开始子协议:是桥连接的驱动程序或是数据库管理系统名称。
数据源标识:标记找到数据库来源的地址与连接端口。
例如:(MySql的连接URL)1.jdbc:mysql:2.//localhost:3306/test?useUnicode=true&characterEncoding=gbk ;useUnicode=true:表示使用Unicode字符集。
如果characterEncoding设置为gb2312或GBK,本参数必须设置为true 。
characterEncoding=gbk:字符编码方式。
3、创建数据库的连接◆要连接数据库,需要向java.sql.DriverManager请求并获得Connection对象,该对象就代表一个数据库的连接。
◆使用DriverManager的getConnectin(String url , String username , String password )方法传入指定的欲连接的数据库的路径、数据库的用户名和密码来获得。
JDBC操作数据库的基本步骤:JDBC操作数据库的基本步骤:1)加载(注册)数据库驱动(到JVM)。
2)建⽴(获取)数据库连接。
3)创建(获取)数据库操作对象。
4)定义操作的SQL语句。
5)执⾏数据库操作。
6)获取并操作结果集。
7)关闭对象,回收数据库资源(关闭结果集-->关闭数据库操作对象-->关闭连接)。
package com.yangshengjie.jdbc;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class JDBCTest {/*** 使⽤JDBC连接并操作mysql数据库*/public static void main(String[] args) {// 数据库驱动类名的字符串String driver = "com.mysql.jdbc.Driver";// 数据库连接串String url = "jdbc:mysql://127.0.0.1:3306/jdbctest";// ⽤户名String username = "root";// 密码String password = "mysqladmin";Connection conn = null;Statement stmt = null;ResultSet rs = null;try {// 1、加载数据库驱动(成功加载后,会将Driver类的实例注册到DriverManager类中)Class.forName(driver );// 2、获取数据库连接conn = DriverManager.getConnection(url, username, password);// 3、获取数据库操作对象stmt = conn.createStatement();// 4、定义操作的SQL语句String sql = "select * from user where id = 100";// 5、执⾏数据库操作rs = stmt.executeQuery(sql);// 6、获取并操作结果集while (rs.next()) {System.out.println(rs.getInt("id"));System.out.println(rs.getString("name"));}} catch (Exception e) {e.printStackTrace();} finally {// 7、关闭对象,回收数据库资源if (rs != null) { //关闭结果集对象try {rs.close();} catch (SQLException e) {e.printStackTrace();}}if (stmt != null) { // 关闭数据库操作对象try {stmt.close();} catch (SQLException e) {e.printStackTrace();}}if (conn != null) { // 关闭数据库连接对象try {if (!conn.isClosed()) {conn.close();}} catch (SQLException e) {e.printStackTrace();}}}}}提⽰:关闭外部资源的顺序应该和打开的顺序相反,也就是说先关闭ResultSet、再关闭Statement、在关闭Connection。
java操作数据库的方法操作数据库是 Java 开发中非常关键的一部分,Java 提供了多种方式来操作数据库,包括 JDBC、ORM 框架等。
下面将介绍 Java 操作数据库的方法,并为你提供一个超过 1200 字的详细解释。
1. JDBC(Java Database Connectivity):JDBC 是 Java 提供的标准 API,用于操作关系型数据库。
JDBC 提供了一组接口和类,开发者可以通过这些接口和类来连接数据库、执行 SQL 语句、处理结果等。
接下来,通过以下步骤使用JDBC操作数据库:- 加载数据库驱动:使用 `Class.forName(` 方法加载指定的数据库驱动类。
- 建立数据库连接:使用 `DriverManager.getConnection(` 方法创建与数据库的连接,需要指定数据库 URL、用户名和密码。
- 创建执行 SQL 语句的 Statement 对象或预编译的PreparedStatement 对象:使用 `Connection.createStatement(` 或`Connection.prepareStatement(` 方法。
- 执行 SQL 语句:使用 `Statement.execute(` 或`PreparedStatement.execute(` 方法执行 SQL 语句,并接收执行结果。
- 处理执行结果:根据 SQL 语句的类型(SELECT、UPDATE、INSERT 或 DELETE),使用 `ResultSet` 对象处理查询结果或使用 `int` 值处理其他类型的结果。
- 关闭连接和相关资源:使用 `ResultSet.close(`、`Statement.close(`、`PreparedStatement.close(` 和`Connection.close(` 方法关闭打开的资源。
JDBC提供了很多灵活的方法,支持事务处理、批量更新、元数据查询等功能,可以根据实际需求进行使用。
JAVA数据库操作Java数据库操作是指通过Java语言来操作数据库,其中最常用的数据库是MySQL。
MySQL是一种开源的关系型数据库管理系统,广泛应用于各行各业。
在Java中,可以使用多种方式来操作MySQL数据库,包括原生的JDBC API、第三方持久层框架如Hibernate、MyBatis,以及Spring框架提供的JdbcTemplate等。
下面将详细介绍使用JDBC API来进行MySQL数据库操作。
JDBC (Java Database Connectivity)是Java语言中用于规范客户端程序如何访问数据库的API。
它提供了一组接口和类,供开发人员使用。
使用JDBC API进行MySQL数据库操作的一般步骤如下:2. 建立数据库连接:使用`DriverManager.getConnection(`方法建立与数据库的连接。
需要提供数据库的URL、用户名和密码等信息。
3. 创建Statement对象:通过数据库连接的`createStatement(`方法创建Statement对象,用于执行SQL语句。
4. 执行SQL语句:使用Statement对象的`executeQuery(`方法执行SQL查询语句,`executeUpdate(`方法执行SQL更新语句。
执行SQL语句后会返回相应的结果或影响的行数。
5. 处理结果集:如果是查询语句,可以通过`ResultSet`对象获取查询结果。
6. 关闭连接:使用`close(`方法关闭数据库连接、Statement对象和ResultSet对象,释放资源。
下面是一个简单的示例代码,演示如何使用JDBCAPI进行MySQL数据库操作:```javaimport java.sql.*;public class Mainpublic static void main(String[] args)String url = "jdbc:mysql://localhost:3306/mydb"; // 数据库URLString username = "root"; // 用户名tryConnection connection = DriverManager.getConnection(url, username, password); // 建立连接Statement statement = connection.createStatement(; // 创建Statement对象String sql = "SELECT * FROM users"; // SQL查询语句ResultSet resultSet = statement.executeQuery(sql); // 执行查询语句while (resultSet.next()int id = resultSet.getInt("id");String name = resultSet.getString("name");System.out.println("id: " + id + ", name: " + name);}resultSet.close(;statement.close(;connection.close(; // 关闭连接} catch (ClassNotFoundException e)e.printStackTrace(;} catch (SQLException e)e.printStackTrace(;}}```除了查询语句,我们还可以执行其他的SQL语句,如插入、更新和删除等,只需要调用Statement对象的相应方法。
黑马程序员:javaweb基础阶段笔记之第十四章WEB14-JDBC案例篇今日任务使用JDBC技术完成对商品的添加修改查询及分页的操作教学导航1.1上次课内容回顾:JSP的模式:* JSP的设计模式:* JSP的模式一:JSP + JavaBean设计模式:* JSP的模式二:JSP + Servlet + JavaBean设计模式:MVC设计模式.* M:Model* V:View* C:Controller* MVC和EE开发三层结构的关系:* 反射:(*****)* 获得类的字节码对象:Class对象.三种获得的方式.* 类名.class;* 类的实例.getClass();* Class.forName();* 获得构造器:Constructor* 获得属性:Field* 获得方法:MethodJDBC的事务管理:* 事务的概念:指的是逻辑上的一组操作,要么一起成功,要么一起失败.* 事务的特性:* 原子性:事务的不可分割* 一致性:事务执行的前后,数据完整性保持一致.* 隔离性:一个事务的执行不应该受到另一个事务的干扰* 持久性:事务一旦结束,将会永久修改到数据库.* 如果不考虑隔离性:* 脏读:一个事务读到另一个未提交的数据.* 不可重复读:一个事务读到另一个事务已经提交的update的数据,导致多次的查询结果不一致.* 虚读:一个事务读到另一个事务已经提交的insert的数据,导致多次的查询结果不一致.* 解决读问题:* 未提交读:以上情况都能发生.* 已提交读:解决脏读,但是不可重复读和虚读有可能发生* 重复读:解决脏读和不可重复读,但是虚读有可能发生.* 串行化:可以解决以上的所有情况.* JDBC进行事务的管理:* Connection:* setAutoCommit(boolean flag);* commit();* rollback();* DBUtils进行的事务的管理:1.2完成对商品的CRUD的操作,进行条件查询,分页查询.1.2.1需求:购物的网站中需要显示商品的信息,在商品信息的显示中,如果商品的信息比较多.需要将比较多的商品进行分页的显示.进行条件查询.同时对商品进行修改,插入,删除.1.2.2分析:1.2.2.1技术分析:使用MVC设计模式JSP + Servlet + JavaBean + JDBC实现商品信息的CRUD的操作.1.2.2.2步骤分析:【步骤一】:创建数据库和表* create database web_14;* use web_14;* create table `product` (`pid` varchar (96),`pname` varchar (150),`market_price` double ,`shop_price` double ,`pimage` varchar (600),`pdate` date ,`is_hot` double ,`pdesc` varchar (765),`pflag` double ,`cid` varchar (96));【步骤二】:创建工程导入jar包.* msysql驱动* c3p0的包* dbutils的包* beanUtils的包:两个.* JSTL的包:两个【步骤三】:创建包结构.【步骤四】:创建一个首页:<h1>欢迎来到商品信息管理平台</h1><h3><a href="${ pageContext.request.contextPath }/ProductFindAllServlet">查询所有商品</a></h3>1.2.3代码实现:1.2.3.1商品的查询的功能:在首页上点击【查询所有商品】链接:提交到Servlet中:* 调用业务层-->调用DAO:* 将商品列表保存到request域中:* 转发到商品列表页面:在商品列表的页面中显示商品:1.2.3.2商品的添加的功能:在首页点击【添加】链接:跳转到添加页面.在添加页面中输入信息:点击【提交】提交到Servlet在Servlet中:* 接收数据:* 封装数据:* 调用业务层:* 页面跳转* 重复提交的问题:* 添加完商品之后,转发到一个页面,刷新该页面.* 网速很慢,点击提交的按钮,其实已经在提交了但是网速慢,不停的点击提交.* 解决重复提交的根本解决办法:令牌机制(一次性).* 生成随机的令牌保存在session中.* 在表单的提交的时候,将随机的令牌放入到表单的隐藏字段中.* 在Servlet中获得session中和表单中的令牌是否一致.* 如果一致执行插入操作,不一致跳转到其他页面.将令牌销毁.* 代码实现:// 判断是否是重复提交:String token1 = (String)request.getSession().getAttribute("token");String token2 = request.getParameter("token");// 清空session中的令牌:request.getSession().removeAttribute("token");if(!token2.equals(token1)){request.setAttribute("msg", "亲!您已经提交过!请不要重复提交了!");request.getRequestDispatcher("/jsp/msg.jsp").forward(request, response);return;}1.2.3.3商品的信息的修改:在列表页面上点击【修改】链接:提交到Servlet:根据id查询该商品.将商品的信息显示到修改页面:在修改的页面上修改数据,点击【提交】按钮:提交到Servlet:完成商品信息的修改:1.2.3.4商品的信息的删除:在列表页面上点击【删除】链接:提交到Servlet:调用业务层完成删除的操作:***** 扩展删除多条记录:1.2.3.5商品模糊查询:1.2.3.6商品分页显示:分页条: 【首页】【上一页】[1][2][3][4]【下一页】【尾页】分页功能的实现:* 物理分页:一次只查10条记录,点击下一页,再去查询后10条.使用SQL语句进行控制的分页.* 缺点:经常需要和数据库交互.* 优点:数据量特别大,不会导致内存的溢出.* 逻辑分页:一次性将所有数据全都查询出来,根据需要进行截取.List集合进行控制. subList();* 缺点:数据量如果特别大,容易导致内存溢出.* 优点:与数据库交互次数少.* 不同的数据库对分页的语句也是不一样的:* MYSQL进行分页: 使用limit关键字.* select * from xxx where .. Group by ... Having ... Order by ... limit a,b; -- a:从哪开始b:查询的记录数.* 根据页数计算limit后面的两个参数:* currPage begin pageSize1 0 102 10 103 20 10* begin = (currPage - 1) * pageSize;* 参数的传递:* 前台--->后台:currPage* 后台--->前台:currPage,totalPage(总页数),totalCount(总记录数),pageSize,List集合.* 使用JavaBean封装参数:* 后台--->前台:传递一个JavaBean就可以.* Oracle进行分页: 使用SQL语句嵌套.* SQL Server数据库进行分页: 使用top 关键字.* 在首页上添加一个分页查询的链接:。
完整java开发中JDBC连接数据库代码和步骤JDBC连接数据库创建⼀个以JDBC连接数据库的程序,包含7个步骤:1、加载JDBC驱动程序:在连接数据库之前,⾸先要加载想要连接的数据库的驱动到JVM(Java虚拟机),这通过ng.Class类的静态⽅法forName(String className)实现。
例如:try{//加载MySql的驱动类Class.forName("com.mysql.jdbc.Driver") ;}catch(ClassNotFoundException e){System.out.println("找不到驱动程序类,加载驱动失败!");e.printStackTrace() ;}成功加载后,会将Driver类的实例注册到DriverManager类中。
2、提供JDBC连接的URL•连接URL定义了连接数据库时的协议、⼦协议、数据源标识。
•书写形式:协议:⼦协议:数据源标识协议:在JDBC中总是以jdbc开始⼦协议:是桥连接的驱动程序或是数据库管理系统名称。
数据源标识:标记找到数据库来源的地址与连接端⼝。
例如:(MySql的连接URL)jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=gbk ;useUnicode=true:表⽰使⽤Unicode字符集。
如果characterEncoding设置为gb2312或GBK,本参数必须设置为true 。
characterEncoding=gbk:字符编码⽅式。
3、创建数据库的连接•要连接数据库,需要向java.sql.DriverManager请求并获得Connection对象,该对象就代表⼀个数据库的连接。
•使⽤DriverManager的getConnectin(String url , String username ,String password )⽅法传⼊指定的欲连接的数据库的路径、数据库的⽤户名和密码来获得。