JDBC连接MYSQL数据库

时间:2021-09-09 13:05:59

JDBC是一种可以执行SQL语句并可以返回结果的JavaAPI,全称是 JavaDataBase Connectivity,也是一套面向对象的应用程序接口(API)。JDBC的最大特点是它能够独立于具体的关系数据库。JDBC的优点:

1、 JDBCODBC十分相似,有利于软件开发人员的理解。

2、 JDBC使软件开发人员从复杂的驱动程序编写工作中解脱出来,可以完全专注于业务逻辑的开发。

3、 JDBC支持多种关系型数据库,使软件的可移植性大大增加。

4、 JDBCAPI是面向对象的,软件开发可以将常用的方法进行二次封装,从而提高代码的重用性。

JDBC的缺点:

1、 通过JDBC访问数据时速度将收到一定影响。

2、 虽然JDBC API是面向对象的,但通过JDBC访问数据库依然是面向关系的。

3、 JDBC提供了对不同数据库厂商的支持,将对数据源带来影响。

1、 加载JDBC驱动程序

在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM,者通过java.lang.Class类的静态方法forName(String className)实现。

例子(mysql):

try{

        Class.forName("com.mysql.jdbc.Driver");//加载驱动

        //将此连接的自动提交模式设置为给定状态。如果连接处于自动提交模式下,则将执行其所有 SQL语句,并将这些语句作为单独的事务提交。

        //否则,其 SQL语句将成组地进入通过调用commit方法或 rollback方法终止的事务中。默认情况下,新的连接处于自动提交模式下。

} catch (ClassNotFoundException e) {

        e.printStackTrace();

}

当加载驱动成功后就把驱动加载到了DriverManager类中了,如果加载失败了,则会抛ClassNotFoundException异常,就是没有找到Driver类。

2、 提供JDBC连接的URL

连接URL定义了连接数据库时的协议、子协议、数据源标识。

协议:在JDBC中总以是jdbc开始

子驱动:是桥接的驱动程序或是数据库管理数据库的名称,例如MySQL就是mysql.

例如:

jdbc:mysql://localhost:3306/DatabaseName?useUicode=ture&characterEncoding=utf-8

3、创建数据库连接

在连接数据库的时候可以向java.sql.DriverManager请求并获得Connection对象,该对象就代表一个数据库连接。可以使用DriverManagergetConnection(String url,String username,Stringpassword)方法传入指定的的连接的数据库的路径、数据库的用户名和密码来获取。例如:

String url="jdbc:mysql://localhost:3306/jsp?useUicode=ture&characterEncoding=utf-8"; //数据库连接字串

static String userName="root";                   //数据库用户名称

static String driver="com.mysql.jdbc.Driver";            //数据库驱动名称

static String pwd="root";                                   //数据库用户登陆密码

try{

con=DriverManager.getConnection(url,userName,pwd);

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

4、 创建一个Statement

      获取到了数据库的连接后,要操作数据库还要能执行SQL语句,要想执行SQL语句,必须获取java.sql.Statement实例,statement实例又可分为以下三种类型:

1、 执行静态的SQL语句,通常通过Statement实例实现

2、 执行动态的SQL语句,通常通过PreparedStatement实例实现。

3、 执行数据库存储过程,通常通过CallableStatemtent实力实现

具体代码如下:

Statement st =con.createStatement();

PreparedStatementps = con.prepreadStatement(sql);

CallableStatementca = con.prepareCall(“{CALL demoSp(?,?)}”);

5、 执行SQL语句

Statement接口提供了三种执行SQL语句的方法,executeQueryexecuteUpdateexecute

具体使用的是哪一种是有SQL的语句的结果来决定的。

1、 ResultSet executeQuery(StringsqlString):执行查询数据库的SQL,如SELECT语句,

返回一个结果集对象;

2、 int executeUpdate(StringsqlString);:用于insertupdate或者delete语句以及SQL DDL语句;

3、 execute(String sqlString):用于执行返回多个结果集,多个更新计数或二者组合的语句。

6、 处理结果

执行后会有两种结果:

                       i.             执行更新返回的是本次操作影响的记录数

                     ii.             执行查询放回的结果是一个ResuletSet对象

 

7、 关闭JDBC对象

在操作完成后都要把使用的JDBC对象全部关闭,释放JDBC资源,关闭的顺序是:

关闭结果集——关闭声明对象——关闭连接

具体代码如下:

rs.close();

ps.close();

con.close();