【JDBC 您所在的位置:网站首页 listen方法的六个步骤 【JDBC

【JDBC

2024-05-27 01:01| 来源: 网络整理| 查看: 265

文章目录 jdbc编程步骤1.注册驱动2.获取数据库的连接3.获取数据库操作对象4.执行sql语句5.处理查询结果集6.释放资源

jdbc编程步骤 jdbc编程6步: 1.注册驱动 2.获取连接 3.获取数据库操作对象 4.执行sql 5.处理查询结果集 6.释放资源 1.注册驱动

注册驱动的作用:告诉jdbc程序,我们即将连接的是哪一种数据库 在这里插入图片描述 在这里插入图片描述

package ghh1.jdbc编程6步; import java.sql.Driver; import java.sql.DriverManager; import java.sql.SQLException; /** * 第一步:注册驱动 * 注册驱动的作用:告诉jdbc程序,我们即将连接的是哪一种数据库 */ public class JDBCTest01 { public static void main(String[] args) { try { //1.注册驱动 /* 左边的是jdbc接口Driver 右边是Mysql数据库中jar包中的实现类(对java.sql.Driver接口的实现) 利用了向上转型 */ //1.1注册驱动对象 //java.sql.Driver driver = new com.mysql.jdbc.Driver(); //可以将左边的java.sql.Driver包导进来 Driver driver = new com.mysql.jdbc.Driver(); //1.2创建驱动对象 DriverManager.registerDriver(driver); } catch (SQLException e) { e.printStackTrace(); } } } 2.获取数据库的连接

在这里插入图片描述

package ghh1.jdbc编程6步; import java.sql.Connection; import java.sql.Driver; import java.sql.DriverManager; import java.sql.SQLException; /** * 第二步:获取数据库连接对象 * 程序执行到此步表JVM已经和3366接口服务建立连接,通道打开 */ public class JDBCTest02 { public static void main(String[] args) { try { //1.注册驱动 //1.1注册驱动对象 Driver driver = new com.mysql.jdbc.Driver(); //1.2创建驱动对象 DriverManager.registerDriver(driver); //2.获取数据库连接 String url = "jdbc:mysql://localhost:3366/bjpowernode"; String user= "root"; String password = "123"; /* 什么是url: 统一资源定位符 URL代表网络中的某个资源的绝对路径 通过URL可以定位网络中的资源 比如:http://www.baidu.com url由哪几部分组成: 协议,IP,端口号,资源名称 jdbc:mysql://localhost:3366/bjpowernode jdbc:mysql:// 协议 localhost IP地址 3366 端口号 bjpowernode 数据库实例名 协议的作用:协议是通讯数据格式,提前制定好的规范, 按照这个中特定的格式发送数据包对方接收到数据包之后 按照这种规范解析数据包,获取有价值的数据 IP地址的作用:定位计算机 端口号的作用:定位服务 */ Connection conn = DriverManager.getConnection(url,user,password); System.out.println(conn); /* * 打印的结果:com.mysql.jdbc.JDBC4Connection@25f38edc * 打印的是Mysql驱动对java.sql.Connection接口的实现类的完整类名 * 相当于Connection conn =com.mysql.jdbc.JDBC4Connection(); * 左边是jdbc接口Connection即java.sql.Connection接口 * 右边是Mysql驱动对java.sql.Connection接口的实现类的完整类名 * 这里利用了向上转型 * * 但是jdbc程序员不需要关系Mysql具体的连接实现类 * 只需要关心面向java.sql.Connection接口中的方法 */ /* * 重点: * Connection对象是一个重量级的对象 * 连接对象不能随便创建,最后使用完毕,必须手动关闭资源 * Mysql支持的最多连接数量是100个 */ } catch (SQLException e) { e.printStackTrace(); } } } 3.获取数据库操作对象

在这里插入图片描述

package ghh1.jdbc编程6步; import java.sql.*; public class JDBCTest03 { public static void main(String[] args) { try { //1.注册驱动 Driver driver = new com.mysql.jdbc.Driver(); DriverManager.registerDriver(driver); //2.获取连接 String url = "jdbc:mysql://localhost:3366/bjpowernode"; String user = "root"; String password= "123"; Connection conn = DriverManager.getConnection(url,user,password); //3.获取数据库操作对象 Statement stmt = conn.createStatement(); System.out.println(stmt); //一个连接对象可创建多个数据库操作对象 Statement stmt2 = conn.createStatement(); System.out.println(stmt2); /** * 打印的结果是Mysql驱动对java.sql.Statement接口的实现类的完整类名 * com.mysql.jdbc.StatementImpl@506c589e * com.mysql.jdbc.StatementImpl@69d0a921 * 相当于 * Statement stmt1 = new com.mysql.jdbc.StatementImpl(); * Statement stmt2 = new com.mysql.jdbc.StatementImpl(); * 左边的是java.sql.Statement接口 * 右边的是Mysql驱动对java.sql.Statement接口的实现类的完整类名 * 这里利用了向上转型 * * 但是程序员只需要关心java.sql.Statement接口中的方法即可 * 不需要关心具体实现类 */ } catch (SQLException e) { e.printStackTrace(); } } } 4.执行sql语句

下面程序主要执行DML语句:insert update delete 在这里插入图片描述

package ghh1.jdbc编程6步; import java.sql.*; public class JDBCTest04 { public static void main(String[] args) { try { //1.注册驱动 Driver driver = new com.mysql.jdbc.Driver(); DriverManager.registerDriver(driver); //2.获取连接 String url = "jdbc:mysql://localhost:3366/bjpowernode"; String user = "root"; String password="123"; Connection conn = DriverManager.getConnection(url,user,password); //3.获取数据库执行对象 Statement stmt = conn.createStatement(); //执行sql语句 String sql = "insert into dept_bak(deptno,dname,loc) values(50,'销售部','北京')"; //程序执行到此处,发送sql语句给数据库管理系统 //数据库管理系统会将这条sql语句编译并且执行 //该方法的返回值类型是int类型,表示影响底层数据库表中的记录总数 int count = stmt.executeUpdate(sql); System.out.println(count); } catch (SQLException e) { e.printStackTrace(); } } }

在这里插入图片描述 将sql语句改为:

String sql = "update dept_bak set dname='市场部',loc='天津' where deptno=50";

在这里插入图片描述

String sql = "delete from dept_bak where deptno=50";

在这里插入图片描述 以上的增删改DML比较简单,比较复杂的是查询语句,因为查询需要处理结果集

5.处理查询结果集

如果第四步执行的SQL语句是DQL语句,那么第五步需要处理查询结果集 如果不是的话,可以直接释放资源 在这里插入图片描述 根据查询结果集中字段的下标获取: 在这里插入图片描述

package ghh1.jdbc编程6步; import java.sql.*; public class JDBCTest05 { public static void main(String[] args) { try { //1.注册驱动 Driver driver = new com.mysql.jdbc.Driver(); DriverManager.registerDriver(driver); //2.获取连接 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3366/bjpowernode","root","123"); //3.获取数据库操作对象 Statement stmt = conn.createStatement(); //执行sql语句 String sql = "select empno,ename,sal from emp"; //程序执行到此处,发送SQL语句给数据库管理系统 //数据库管理系统执行DQL语句 //将执行之后的查询结果放到ResultSet这个结果集对象中了 ResultSet rs = stmt.executeQuery(sql); //5.处理查询查询结果集 /** * rs查询结果集中就封装了以下信息: +-------+--------+---------+ | empno | ename | sal | +-------+--------+---------+ | 7369 | SIMITH | 800.00 | | 7499 | ALLEN | 1600.00 | | 7521 | WARD | 1250.00 | | 7566 | JONES | 2975.00 | | 7654 | MARTIN | 1250.00 | | 7698 | BLAKE | 2850.00 | | 7782 | CLARK | 2450.00 | | 7788 | SCOTT | 3000.00 | | 7839 | KING | 5000.00 | | 7844 | TURNER | 1500.00 | | 7876 | ADAMS | 1100.00 | | 7900 | JAMES | 950.00 | | 7902 | FORD | 3000.00 | | 7934 | MILLER | 1300.00 | +-------+--------+---------+ */ /** * boolean hasMore = re.next(); * next()方法的作用: * 1.将光标向前移动一行 * 2.指向的当前行有记录,返回true * 3.指向的当前行没有记录,返回false */ while(rs.next()) { //取当前光标指向的行中的数据 //无论数据库表中字段的数据类型是什么,都以字符串的形式取出 //以下根据查询结果集中字段的下标获取 String empno = rs.getString(1);//jdbc中所有的下标都是从1开始的 String ename = rs.getString(2); String sal = rs.getString(3); System.out.println(empno+"..."+ename+"..."+sal); } } catch (SQLException e) { e.printStackTrace(); } } }

在这里插入图片描述 根据查询结果集中字段的名称获取: 在这里插入图片描述

//以下是根据查询结果集中的字段名称获取 String empno = rs.getString("empno"); String ename = rs.getString("ename"); String sal = rs.getString("sal"); System.out.println(empno+"..."+ename+"..."+sal);

在这里插入图片描述 注意:是查询结果集中字段的下标,比如对查询结果集中字段重命名

package ghh1.jdbc编程6步; import java.sql.*; public class JDBCTest07 { public static void main(String[] args) { try { //1.注册驱动 Driver driver = new com.mysql.jdbc.Driver(); DriverManager.registerDriver(driver); //2.获取连接 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3366/bjpowernode","root","123"); //3.获取数据库操作对象 Statement stmt = conn.createStatement(); //执行sql语句,将字段重命名 String sql = "select empno a,ename b,sal c from emp"; //将执行之后的查询结果放到ResultSet这个结果集对象中了 ResultSet rs = stmt.executeQuery(sql); //5.处理查询查询结果集 while(rs.next()) { String empno = rs.getString("a"); String ename = rs.getString("b"); String sal = rs.getString("c"); System.out.println(empno+"..."+ename+"..."+sal); } } catch (SQLException e) { e.printStackTrace(); } } }

以字段特定的类型获取查询结果集:

//以特定的数据类型取出数据 //empno是int类型 //ename是String类型 //sal是double类型 int empno = rs.getInt("a"); String ename = rs.getString("b"); double sal = rs.getDouble("c"); System.out.println((empno+1)+"..."+ename+"..."+sal); 6.释放资源

释放资源的注意事项:

为了保证资源的释放,将释放资源的代码写到finally语句块中需要关闭ResultSet,Statement,Connection一个Connection可以创建多个Statement,一个Statement可以得出多个ResultSet,所以关闭的时候先关闭ResultSet,再关闭Statement,最后关闭Connection package ghh1.jdbc编程6步; import javax.swing.plaf.nimbus.State; import java.sql.*; public class JDBCTest09 { public static void main(String[] args) { Connection conn=null; Statement stmt=null; ResultSet rs = null; try { //1.注册驱动 Driver driver = new com.mysql.jdbc.Driver(); DriverManager.registerDriver(driver); //2.获取连接 conn = DriverManager.getConnection("jdbc:mysql://localhost:3366/bjpowernode","root","123"); //3.获取数据库操作对象 stmt = conn.createStatement(); //执行sql语句 String sql = "selelct * from dept"; rs = stmt.executeQuery(sql); //处理查询结果集 while(rs.next()){ String deptno = rs.getString("deptno"); String dname = rs.getString("dname"); String loc = rs.getString("loc"); System.out.println(deptno+"..."+dname+"..."+"loc"); } } catch (SQLException e) { e.printStackTrace(); }finally{ 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 { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } }


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有