JDBC使用

Java的JDBC(与数据库的交互)

一、什么是JDBC

jdbc(java database connectivity)是一个独立于特定数据库管理系统、通用的sql数据库存取和操作的公共接口。jdbc为访问不同的数据库提供了一种统一的途径,为开发者屏蔽了一些细节问题。目标是让java程序员使用jdbc可以连接任何提供了jdbc驱动程序的数据库系统。

二、JDBC的体系结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WEhzBYUh-1596855679048)(./img/JDBC体系结构.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cCmBlw8r-1596855679050)(./img/结构.png)]

三、具体的接口

1、Driver接口

每一个接口必须实现的接口,能从其中获取数据库的连接。数据库厂商去实现,我们不用去实现。

2、如何获取连接

(通过Driver)

第一步:加载数据库驱动

第二部:创建Driver实现类的对象 --> 调用Driver接口的connect(url,info) 获取数据库连接(需要的信息有:数据库地址(jdbc:mysql://ip:端口/数据库名称)、用户名、密码);

上诉步骤一般写在一个方法中,并把连接需要的信息放在配置文件中

代码:

try {
   
            driver = (Driver) Class.forName(driverClass).newInstance();//通过反射获取的Driver实例
        } catch (InstantiationException e) {
   
            e.printStackTrace();
        } catch (IllegalAccessException e) {
   
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
   
            e.printStackTrace();
        }
        //读取配置文件
        Properties properties1 = new Properties();
        properties1.put("user",user);
        properties1.put("password",password);
        //获取连接

        Connection connect = null;
        try {
   
            connect = driver.connect(jdbcurl,properties1);//获取连接
        } catch (SQLException e) {
   
            e.printStackTrace();
        }
(通过DriverManager:常用)

第一步:加载数据库驱动(可以加载多个不同数据库)

Class.forName(String str);//这里的str为数据库驱动所在类的全类名

第二步:获取数据数据连接

通过DriverManager的静态方法实现

Connection DriverManager.getConnection();//此方法有多个重载的方法,根据参数不同来区分,一般有如下几个参数:数据库的地址、用户名、密码

代码:

try {
   
            Class.forName(driverClass);//加载驱动
        } catch (ClassNotFoundException e) {
   
            e.printStackTrace();
        }
        //获取连接
        Connection connection = null;
        try {
   
            connection = DriverManager.getConnection(jdbcurl+"characterEncoding=utf8&useSSL=true",user,password);
        } catch (SQLException e) {
   
            e.printStackTrace();
        }
通过Properties来读取配置文件

第一步:创建Properties对象

Properites p = new Properites();

第二步:获取配置文件对应的输入流

InputStream in = this.getClass().getClassLoader().getResourceAsStream("文件名(包括路径)");

第三步:加载对应的输入流

p.load(in);

第四步:获取对应的key的value

p.getProperity("键名");//键名就是配置文件里面‘=’左边的

注意点:不同数据库的配置文件的不同点

/**
连接mysql时配置文件的内容如下:后面不需要写分号,并且等号两边不能够有空格
*/

  • user=
  • password=
  • jdbcUrl=jdbc:mysql:// + ip地址 +/数据库名称
  • driverClass=com.mysql.jdbc.Driver 或者 com.mysql.cj.jdbc.Driver

​ /**

​ 连接orc时配置文件的内容如下:后面不需要写分号,并且等号两边不能够有空格

​ */

  • ​ user=

  • password=

  • jdbcUrl=jdbc:oracle:thin: @ip地址:orcl

    注意:ip地址的后面需要加上应用程序的端口号,mysql默认3306,orcle默认1521

四、通过Statement执行更新、删除、插入操作

第一步:准备sql语句

第二步:获取Statement对象

调用Connection的

public Statement createStatement();

获取Statement的对象;

第三步:Statement 的executeUpdate(sql)执行sql语句

executeUpdate(String sql);

第四步:关闭Staement对象

close();

第五步:关闭连接(Connection)

close();

注意:

  • 关于executeUpdata(String sql);可以是:insert、update 、delete,不能够是select
  • Connection 、Statement 都是应用程序与数据库的服务器的连接资源,都必须要关闭(必须关闭)
  • 关闭的顺序是,先关闭后获取的资源,即:先关Statement,再关闭Connection

五、数据库的数据类型与Java数据类型的对应转换表

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5Znv0SW0-1596855679051)(./img/dataConvert.png)]

六、通过Statement执行查询操作

1、ResultSet

结果集。封装了使用JDBC进行查询的结果。

通过Statement对象的

public ResultSet executeQuery(String sql)

可以得到ResultSet结果集。

2、什么是结果集

结果集就是一张数据表,初始时指向表的第一行的上面一行(但是没有指向第一行),调用next()返回true,指向下一行,相当于Iterator的hasNext()和next()。然后通过getXxx(int index)的方法获取一行的每列的列值,其中是基本数据类型,index为字段在数据表中从左到右,从1到结尾的索引位置。ResultSet维护了一个指向当前行的游标,一开始指向第一行的前一行

3、具体步骤

第一步:通过Statement获取ResultSet对象。

第二步:通过ResultSet对象调用next()方法指向第一行,然后通过getXxx(index)获取第一行index列的Xxx类型的值。

第三步:关闭ResultSet资源

代码:

Connection connection = jdbcTest.getConnection();//获取数据库连接
        System.out.println(connection);
        Statement statement = connection.createStatement();//获取Statement
        ResultSet resultSet = statement.executeQuery("SELECT stu,name,sex FROM studentinfo");//sql查询语句
        boolean next = resultSet.next();//指向下一行
        if (next) {
   
            System.out.println(resultSet.getString(1) + "\t" + resultSet.getString(2));//获取具体列的信息
        }
        try {
   //关闭资源
            resultSet.close();
            statement.close();
            connection.close();
        } catch (SQLException e) {
   
            e.printStackTrace()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值