JDBC-环境搭建及简单介绍和使用

一、JDBC简介

学习完JavaSE的内容后,紧接着就需要使用到JDBC,
该内容可以建立java与数据库之间的联系并通过java
对数据库进行操作。具体如下图

在这里插入图片描述


二、JDBC核心API接口和类

在初期学习jdbc时需要掌握下面几个接口的使用
1Connection : 接口 连接对象
2Statement: 接口 发送SQL,通知数据库服务器执行
3ResultSet: 接口 对应查询的结果集
4DriverManager: 类驱动管理器,管理项目中所有的数据库驱动

补充:驱动就是指存放多个.class文件

三个接口之间的关系如下图:
首先需要创建一个仓库,创建一个路连接工厂和仓库,
然后准备需要运输到仓库中的产品,再准备一辆车负责将产品运输到仓库。

在这里插入图片描述


三、搭建JDBC环境

第一步:在idea中导入第三方jar包(使用初期由自己手动导入,后续使用到maven就不需要自己手动导入了

  1. 在项目中创建一个目录为lib(自定义命名)
    在这里插入图片描述

  2. 拷贝第三方jar包到lib目录中(复制粘贴)
    在这里插入图片描述

  3. 设置lib目录为一个库目录(File=>Project Structure…=>Libraries=>+=>java=>选择lib所在的位置=>apply=>ok)
    以后还需要在lib中添加jar包直接拷贝进来即可不需要再进行上述的设置
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  4. 新导入的jar包可能会出现无法展开的现象,需要手动进行下设置(类似刷新)

  如果打勾了还是没有展开则将勾去掉后再使用apply然后ok
在这里插入图片描述在这里插入图片描述


四、第一个jdbc程序

整体思路
1、加载驱动类(仓库)
2、获取连接(路)
3、编写SQL语句(产品)
4、创建Statement对象(车)
5、发送SQL,通知数据库执行,接收结果(增删改)
6、如果是查询,返回的是结果集,类型为ResultSet,循环解析并输出
7、关闭资源

第一步:加载驱动类Driver

	位置:Mysql.jar=>com=>jdbc=>Driver=>右键复制 copy reference
	代码:Class.forName("com.mysql.jdbc.Driver");

第二步:获取连接

步骤:
	1、创建Connection对象   Connection conn;
	2、使用DriverManager类的getConnection方法(三个参数)
	3、第一个参数 url:访问数据库服务器的网址
		jdbc:协议名
		mysql:连接哪个数据库
		localhost:服务器ip地址
		3306:mysql默认的端口
		mydb:数据库的名称
		?key=value
		完整代码:jdbc:mysql://localhost:3306/fisi?useUnicode=true&characterEncoding=utf8&useSSL=false

	4、第二个参数 user:用户名
	5、第三个参数:password 密码
代码:
	Connection conn=null;
	String url = "jdbc:mysql://localhost:3306/fisi?useUnicode=true&characterEncoding=utf8&useSSL=false";
 	conn = DriverManager.getConnection(url,"root","123456");

第三步:编写SQL语句

代码:
	String sql = "insert into test3 values(4,'测试')";
描述:
	编写的SQL语句用String类型的变量接收,语句与mysql中学习的一致没有差别

第四步:创建Statement对象

步骤:
	1、创建全局的Statement对象
	2、通过Connection对象创建Statement对象
代码:
	Statement smt=null;
	smt = conn.createStatement();

第五步:发送SQL,通知数据库执行,接收结果(增删改)

步骤:
	1、增删改使用executeUpdate方法通过Statement对象将其发送给数据库并得到数值型的返回结果
	2、对返回的数值型结果进行判断,如果值>0则代表操作成功,否则失败
代码:
	int row = smt.executeUpdate(sql);
	if (row>0){
    
    
         System.out.println("操作成功");
   	}else{
    
    
         System.out.println("操作失败");
   	}

第六步:查询的代码

步骤:
	1、查询使用executeQuery方法通过Statement对象将其发送给数据库并得到ResultSet类型的返回结果
	2、使用while循环遍历得到的结果集
	3、该结果集的有一个next()方法,该方法可以移动指针,一行一行的移动
	4、通过结果集调用getXxx(int index)方法可以返回index所在类的那一个数据
	5、通过结果集调用getXxx(String name)方法可以返回指定列名的数据
	6、getXxx中的Xxx是指的数据类型
代码:
	ResultSet rs=null;
	rs = smt.executeQuery(sql);
	while(rs.next()){
    
    
       int id = rs.getInt("id");
       String department = rs.getString("department");
       System.out.println(id+"---->"+department);
     }

第七步:关闭资源

牢记:先开的后关,后开的先关
代码:
	try {
    
    
       if (rs!=null){
    
    rs.close();}
       if (smt!=null){
    
    smt.close();}
       if (conn!=null){
    
    conn.close();}
     } catch (SQLException throwables) {
    
    
       throwables.printStackTrace();
     }

整体代码

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class JDBCdemo1 {
    
    
    public static void main(String[] args)  {
    
    
        // todo 增删改
        Connection conn=null;
        Statement smt=null;
        try {
    
    
            //todo 1、加载驱动  jar包com目录下jdbc目录Driver类   复制
            Class.forName("com.mysql.jdbc.Driver");

            //todo 2、获取连接
//            jdbc:mysql://localhost:3306
//            jdbc 协议名   mysql 连接哪个数据库  localhost mysql服务器的ip地址远程的mysql使用真实IP  3306  mysql默认的端口
            String url = "jdbc:mysql://localhost:3306/fisi?useUnicode=true&characterEncoding=utf8&useSSL=false";

            conn = DriverManager.getConnection(url,"root","123456");

            //todo  3、编写SQL
            // 增
            String sql = "insert into test3 values(4,'测试')";


            // todo 4、创建statement
            smt = conn.createStatement();
            // todo 5、发送sql
            int row = smt.executeUpdate(sql);
            // 判断
            if (row>0){
    
    
                System.out.println("操作成功");
            }else{
    
    
                System.out.println("操作失败");
            }
        } catch (ClassNotFoundException | SQLException e) {
    
    
            e.printStackTrace();
        }finally {
    
    
            // todo 6、关闭资源 先开后关
            try {
    
    
                if (smt!=null){
    
    smt.close();}
                if (conn!=null){
    
    conn.close();}
            } catch (SQLException throwables) {
    
    
                throwables.printStackTrace();
            }

        }

    }
}


五、mysql数据类型对应java数据类型

mysql数据类型 java数据类型
char String
varchar String
text String
int int
double double
decimal double/BigDecimal
date java.sql.Date
time java.sql.Time
datetime java.sql.Date

六、核心API(三个接口一个类)

1、DriverManager类

获取连接,静态方法getConnection() 注册驱动

2、Connection接口

作用1:创建Statement对象
作用2:创建PreparedStatement对象:执行sql
作用3:创建CallableStatement对象:执行数据库存储过程(java的方法)
作用4:关于事务的相关方法

3、Statement接口

作用:发送sql,通知数据库执行
 
两个子接口:
①、PreparedStatement :
不需要拼接SQL,以后基本上使用的就是这个接口
②、CallableStatement:
调用存储过程
 
执行SQL语句的方法增删改和查两者有不同的方法,使用时不明确,所以Statement提供了另外一个方法 Boolean execute(sql)
 
返回值为true 代表 语句是查询语句 有结果集
  获取结果集 ResultSet getResultSet()
返回值为false 代表 语句时增删改 没有结果集
  得到受影响行数 int getUpdateCount()

4、ResultSet接口

类型:
  1、默认类型是TYPE_FORWARD_ONLY 只能往前移动的结果集: next() 有效
  2、调用previous()抛出异常SQLException
 
获取结果集元数据:
  得到元数据 rs.getMetaData()返回值为ResultSetMetaData
  
ResultSetMetaData类的方法
1、获取结果集的列数:int getColumnCount()
2、获取指定列的列名:String getColumnName(int colindex)

猜你喜欢

转载自blog.csdn.net/qq_52998673/article/details/126754131