MyBatis是一个优秀的持久层框架,它对JDBC的操作数据库的过程进行封装。在《 MyBatis学习建议 》里面提到了,入门阶段需要结合JDBC知识,以加深理解MyBatis的工作原理和核心类库。所以,本文在主要内容是围绕JDBC展开的。JDBC是连接数据库和Java程序的桥梁,通过JDBC API可以方便地实现对各种主流数据库的操作。

1、什么是JDBC?

Java数据库连接 Java Database Connectivity,简称JDBC,它是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC是一类接口,制定了统一访问各类关系数据库的标准接口。如果没有JDBC这个接口标准的存在,程序员面对各类数据库的操作将会变得十分复杂,并令人抓狂。

2、什么是驱动?

JDBC是接口,驱动是接口的实现类,没有驱动将无法完成数据库连接,从而不能操作数据库!每个数据库厂商都需要提供自己的驱动,用来连接自己公司的数据库,也就是说驱动一般都由数据库生成厂商提供。

驱动程序可以保证两个设备进行通信,它需要满足一定通信数据格式,数据格式由设备提供商规定,设备提供商为设备提供驱动软件,通过驱动程序可以与该设备进行通信。

3、JDBC的开发步骤简介

我们需要访问数据库时,首先要加载数据库驱动,只需加载一次,然后在每次访问数据库时创建一个Connection实例,获取数据库连接,获取连接后,执行需要的SQL语句,最后完成数据库操作时释放与数据库间的连接。具体的开发步骤如下所示:

第一步:注册和加载数据库驱动

此步骤的目的是告知JVM使用的是哪一个数据库的驱动。Java加载数据库驱动的方法是调用Class类的静态方法forName(),语法格式如下:

Class.forName(String driverManager)

例如,加载MySQL数据库驱动如下:

try 
{
    Class.forName("com.mysql.jdbc.Driver");
} 
catch(ClassNotFoundException e) 
{
    e.printStackTrace();
}

如果加载成功,会将加载的驱动类注册给DriverManager;如果加载失败,会抛出ClassNotFoundException异常。

需要注意的是,要在项目中导入mysq-connection-java的jar包,方法是在项目中建立lib目录,在其下放入jar包。

第二步:获得数据库连接

此步骤需要使用JDBC中的类,完成对数据库的连接。加载完数据库驱动后,就可以建立数据库的连接了,需要使用DriverManager类的静态方法getConnection()方法来实现。代码如下:

Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/database_name";
String user = "root";
Strign password = "root"
//建立连接
Connection conn = DriverManager.getConnection(url, user, password);

代码说明:url是数据库的url,其中mysql指定数据库为mysql数据库,localhost是本地计算机,可以换成IP地址127.0.0.1,3306为MySQL数据库的默认端口号,database_name是所要连接的数据库名;user和password对应数据库的用户名和密码;最后再通过getConnection建立连接。

第三步:获得语句执行对象,然后执行SQL语句,获取执行结果,最后释放资源

通过连接对象获取对SQL语句的执行者对象,利用执行者对象,向数据库发送并执行sql语句,然后获取到数据库的执行后的结果

建立了连接之后,就可以使用Connection接口的createStatement()方法来获取Statement对象,也可以调用prepareStatement()方法获得PrepareStatement对象,通过executeUpdate()方法来执行SQL语句。

以插入为例,我们可以使用Statement接口中的executeUpdate()方法,如下:

String sql = "insert into user(username, sex, address) values('张三','1','北京市')";
Statement stmt = conn.createStatement();    //创建一个Statement对象
stms.executeUpdate(sql);                   //执行SQL语句
conn.close();                             //关闭数据库连接对象

还可以使用PreparedStatement接口中的executeUpdate()方法,如下:

String sql = "insert into user(username, sex, address) values(?,?,?)";
PreparedStatement ps = conn.preparedStatement(sql);
ps.setString(1, "张三");    //为第一个问号赋值
ps.setInt(2, 1);           //为第二个问号赋值
ps.setString(3, "北京市"); //为第三个问号赋值
ps.executeUpdate();
conn.close();

标签: none

已有 2 条评论

  1. 求学者 求学者

    站长,class.forname里面的是包名.类名么?

    1. simula simula

      是的弟弟,相信自己。
      其实这种问题可以不用问的,自己去看Class类上forname的注释就行了。

添加新评论