Java初学者笔记18—JDBC基础

JDBC : 就是把Java和数据库连接起来,能够在java的编译器中对数据库进行操作的方式。

JDBC的本质就是java中有许多官方定义的,用来操作数据库的接口,这些接口可以操作所有的关系型数据库,并且每一种类型的数据库,都有自己独有的jar包(其中包含了一些实现类),供这些接口实现,而这些jar包也叫做数据库驱动。真正要执行代码的其实就是数据库驱动中的代码(多态)。

 

JDBC基本使用步骤:

1导入jar包(数据库驱动):把mysql的jar包导入到编译器中。

2 注册驱动:让程序知道使用的是那种类型的数据库驱动

Class.forname(com.mysql.jdbc.Driver)(这一步在mysql5之后可以省略)

3 获取数据库连接对象:连接到具体的数据库。

调用DriverManager中的静态方法Getconnection,获取用于数

据库链接的对象connertion 对象。

Connertion a=drivermanager.getconnection(“jdbc:mysql://ip:端口号/数据库名称”,”用户名”,”密码”)   

4 获取执行sql语句对象:通过connertion对象中的方法createstatement获取

  Statement b = a.createStatement();

5创建sql语句:使用字符串的形式,直接书写

  String c=”...”

6执行sql语句:使用Statement中的executeupdate执行,返回受到影响的行数

  Int d=b.executeupdate(c)

7 处理结果:处理d,也会就是受到影响的行数

8 释放资源:a.close();,b.close();

 

 

Jdbc常用的对象类型

 

      个人理解:定义中说java提供接口,数据库驱动提供实现类,但是这些实现类在哪里?完全看不到,我所见到的接口和类都是jdk中的,不属于数据库驱动(jar包),因此我猜测数据库驱动的实现类,并不是不存在,而应该都是隐性的。

 

      1 DriverManager :这是一个类,驱动管理对象

              1注册驱动:static void registerDriver(Driver driver),这也是一个注册驱动,但是不常用,与我们class.forname方法的性质是一样的,因为Driver这个类的源码中有一个静态代码块,在使用class.forname方法时,这个静态代码块会被执行一次,其内容就是 registerDriver方法

              2 获取数据库连接对象:

                 static Connection getConnection(string ,string,string),获取连接对象。

    

      2 Connection:接口,数据库连接对象,事务

1. 获取执行sql 的对象

 Statement createStatement()

 PreparedStatement prepareStatement(String sql)  

  1. 管理事务:

 开启事务:

setAutoCommit(boolean autoCommit):调用该方法设置参数为false,即开启事务

提交事务:commit() 回滚事务:rollback()

      3 Statement:接口,执行sql的对象

1. boolean execute(String sql):可以执行任意的sql (了解)

2. int executeUpdate(String sql):执行DML,DDL,返回受影响的行

数,返回值>0的则执行成功,反之,则失败。

  1. ResultSet executeQuery(String sql):执行DQL(select)语句

          4 ResultSet:接口,结果集对象,用于查询结果,当执行sql语句是查询语句时(Statement的executeQuery方法的返回值),使用这个接口接收。

                    1  next():返回一个布尔值,让游标(从最上方表头开始),下移一行。

                    2  ???  get???(int):???代表要获取的数据类型,参数int则是获取第几列的数据字段(不是索引,从1开始),并且将这个字段返回。

                       ???  get???(string):参数string代表根据列名获取数据字段。

                       这两个方法与迭代器的使用类似,一般结合while语句使用。

          5 PreparedStatement:也是用来执行sql语句的,和Statement相比较这个才是安全的接口,避免一些安全问题(有一些sql的特殊关键字参与字符串的拼接)。

                       简单地说,就是用占位符?。来代替sql语句中的条件查询where后的数据字段。

                      和Statement的操作流程相比较,它是在获取 PreparedStatement对象的时候,就把要执行的sql语句放入其中,用setXXX方法对占位符?进行赋值。

                      随后在执行sql语句的时候,不会向其中放入参数。

 

     我们也可以自己定义一个jdbc的工具类,来简化驱动,和链接数据库的代码,包括处理异常的代码。但是其步骤需要使用到配置文件,我不会。

          

         

     JDBC 事务管理:和数据库中一样

           还是分三步 1 开启事务:根据Connection对象中setAutoCommit(false)方法

去开启事务,要在数据库连接之后,且在sql语句执行之前。

                      2 提交事务 sql语句执行之后添加。C..对象中的commit();方法

                      3 回滚事务  在catch语句中添加。C..对象中的rollback();方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值