实现JDBC编程

JDBC编程

JDBC —> java database connectivity 即java数据连接,
是执行sql语句的javaAPI(application programming interface),所谓的数据库是一类软件,就会提供对应的API,数据库有很多种,不同的数据库提供对应的API是不一样的,而这个API有java.sql.* 和 javax.sql.*包中的一些类和接口组成,它为Java开发人员操作数据库提供了一个标准的API,可以为多种关系数据库统一访问.



数据库是一种"客服端–服务器"的结构,服务器往往会处理多个客服端的请求,前面我们通过cmd的形式以sql代码发送至服务器,服务器需要进行的操作是先检查该代码的正确性再执行 而这种方式会增大服务器的工作量,于是就出现用代码来完成客服端与服务器的连接—JDBC编程

一、提示

优点:
1.Java语言访问数据库操作完全面向抽象接口编程
2.开发数据库应用不用限定在特定数据库厂商的API
3.程序的可移植性大大增强

准备工作:
在这里插入图片描述
在idea项目中创建文件夹lib,并把该文件复制到lib中,再配置该jar包到本项目的依赖中:通过右键lib找到把该文件添加到位库,进而才能识别这是个"库"

二:实现编程

1.实现数据源对象

DataSource dataSource = new MysqlDataSource();//向上转型

DataSource 是个接口描述了数据从哪里来,数据库的位置,要使用该接口的方法就需要使用实现该接口的子类
设置对象的属性
1.数据库服务器的位置
2.访问服务器的用户名
3.访问服务器的密码

((MysqlDataSource) dataSource).setUrl("");
//描述jdbc的用途是给mysql使用的 
((MysqlDataSource) dataSource).setUser("");
//root ->  mysql自带的用户 管理员用户 权限最高!
((MysqlDataSource) dataSource).setpassword("");

其中url的格式为:
ip地址(描述mysql服务器在那个主机上)+端口号(区分一个主机的应用程序)+数据库名+‘?’+额外参数(解释说明这次数据库的连接)+'&'关闭加密

2.和数据库服务器建立连接

方法依然是数据源里面的,不过返回值的类型是Connection对象

Connection connection = dataSource.getConnection();

注意:
1.使用该方法的时候,数据库可能会出现未知的问题,所以需要处理异常
在方法上声名该异常 或者使用 try …catch…
2.此处连接成功的原因是必须要保证访问的数据库IP/端口号/数据库名/相关参数/用户密码

3.构建sql语句

比如,添加一个学生

String str = "insert into student values(1,"张三")";
PrapredStatemet statement = connection.prepareStatement(sql);

PrapredStatemet :“预编译的语句”:用来解析该语句的准确性
同时注意方法依然是上一个connect对象里的方法,用来编译sql语句同时返回PrapredStatement对象

4.把sql发送到服务器上并执行

法一:直接添加数据
完成上一个操作后就需要把该语句发送到服务器上并执行该语句
此时就要用到方法
举例

//最关键的操作
statement.executeUpdate();
返回值是整型,也就是在数据库上真正修改的代码的行数

在命令行,执行成功返回的数字在这里插入图片描述
除此之外,以上是用来增删改的一系列的操作在最关键的操作是
statement.executeUpdate(); 是正在和数据库服务器进行网络通信的
但是我们要在idea中进行查询某些数据的时候,有许多不同
此时方法是

ResultSet resultset = statement.executeQuery();
不出意外,返回的数据类型是"结果集合"故需要遍历,与迭代器的方法类似
 		while(resultSet.next()){
            System.out.println(resultSet.getInt("id"));
            System.out.println(resultSet.getString("name"));
        }

栗子:

public class Test_jdbc2 {
    public static void main(String[] args) throws SQLException {
        //1.创建数据源
        DataSource dataSource = new MysqlDataSource();
        // 三个准备工作
        ((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java112?characterEncoding=utf8&useSSL=false");

        ((MysqlDataSource) dataSource).setUser("root");
        ((MysqlDataSource) dataSource).setPassword("liusan11");
        //2.连接数据数据库服务器

        Connection connection = dataSource.getConnection();

        //3.构建sql语句
        String sql = "select * from student";
        PreparedStatement statement = connection.prepareStatement(sql);

        ResultSet resultSet = statement.executeQuery();
       
        //遍历结果集合
        while(resultSet.next()){
            System.out.println(resultSet.getInt("id"));
            System.out.println(resultSet.getString("name"));
        }

        //关闭资源
        resultSet.close();
        statement.close();
        connection.close();
    }
}

法二:通过控制台添加数据

public class jdbc3 {
    public static void main(String[] args) throws SQLException {
        //0.输入操作
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入id :");
        int id = scan.nextInt();
        System.out.println("请输入名字 :");
        String name = scan.next();
        //1.创建数据源 并设置3个属性
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java112?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource) dataSource).setUser("root");
        ((MysqlDataSource) dataSource).setPassword("liusan11");
        //2.获取连接对象
        Connection connection = dataSource.getConnection();
        //3.构造sql语句
        String sql = "insert into student values(?,?)";//? 表示占位符
        PreparedStatement statement = connection.prepareStatement(sql);
        //匹配占位符的顺序和类型 方法同样!
        statement.setInt(1,id);
        statement.setString(2,name);
        //4.发送到服务器
        int n = statement.executeUpdate();
        System.out.println(n);
        //5.释放资源
        statement.close();
        connection.close();
    }
}

5.释放资源

statement.close();
connection.close();
resultSet.close();

这里必须要保证顺序与先前的相反!

总结

大概就这样了,本节内容主要就是通过java代码来实现客服端和服务器的通信,重点在于实现代码编程可以分以下几个步骤
1.创建数据源对象 2.建立客服端和服务器的关系3.创建sql代码并发送到服务器执行4.释放资源
每个步骤都建立依赖的联系:关系从数据源对象中方法得来,预编译语句从关系的编译中的方法而来,只要记住这个规律,代码手到擒来,每一句代码实现的原因以及这个过程都是显而易见的!

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值