Java Web学习二:JDBC连接MySQL数据库

  • JDBC连接MySQL数据库
  • 一:JDBC及其使用原理
  • 二:JDBC核心的接口,以及代码步骤
  • 1.注册驱动:的Class.forName( “com.mysql.jdbc.driver”);
  • 2.获取连接器(连接),如果可以获得,则表示已经连接上。
  • 3.编写我们要执行的SQL语句
  • 4.预处理创建对象来执行SQL语句。
  • 5.设置占位符参数
  • 6.执行具体操作
  • 7.关闭

JDBC连接MySQL数据库

一:JDBC及其使用原理

jdbc(Java DataBase Connectivity)顾名思义就是Java数据库连接,通过使用Java语言来操作数据库的工具。

我们知道,我们在console控制台操作数据库时使用的是SQL语句,其实同理JDBC就是通过java语言来向数据库发送SQL语句。

原理分析:

java mysql数据库连接串 java连接mysql原理_数据库


厂商每个来提供遵循我们这种语法或者说的英文规范的驱动(驱动程序)驱动是一种API。

API:应用程序编程接口,及应用程序编程的接口,一些预先定义的函数,无需访问到源码,直接调用。

所以,我们直接调用驱动程序来与我们的数据库连接。

JDBC是接口,而JDBC驱动才是真正的接口的实现,没有驱动就无法完成数据库的连接。

二:JDBC核心的接口,以及代码步骤

代码步骤:(注意导入mysql数据库的驱动jar包)

1.注册驱动:的Class.forName( “com.mysql.jdbc.driver”);

使用JDBC时注册驱动时,不使用DriverManager.registerDriver(new com.mysql.jdbc.Driver());因为java.sql.Driver这个接口码虽然可以注册驱动,但是出现硬编码,而且其实注册了两次,com.mysql.jdbc.Driver中其实静态板块会创建本类的对象。

public class Driver extends NonRegisteringDriver implements java.sql.Driver {
静态 {
尝试 {
java.lang.DriverManager中registerDriver(new Driver());
} catch(SQLException E){
抛出 新的 RuntimeException(“无法注册驱动程序!”);
}
}
…
}

2.获取连接器(连接),如果可以获得,则表示已经连接上。

通过DriverManger的的getConnection方法来获取

Connection conn = DriverManger.getConnection(url,name,password);

url:标准资源的地址,也可以说是独有的网址。
它是用来找到要连接数据库“网址”,这里url =“jdbc:mysql:// 8080 / ”数据库名称“?useUnicode = true&characterEncoding = utf8”;

名与密码为数据库名和密码。

3.编写我们要执行的SQL语句

例如:

String sql =“select * from tbl_user where uname =?and upassword =?”;

这里采用?占位符,是为了防止SQL攻击,加密了文档。

4.预处理创建对象来执行SQL语句。

对象采用PreparedStatement (PreparedStatement是Statement的子接口,你可以使用PreparedStatement来替换语句)。
//执行SQL语句PreparedStatement pstmt = conn.prepareStatement(sql);

5.设置占位符参数

pstmt.setString(1,username);
pstmt.setString(2,密码);

6.执行具体操作

(1)executeUpdate(sql)是执行更新操作,比如添加,更新(修改),删除的。

返回一个int类型的值用行接收,表示数据修改的次数,所以行> 0,则表示执行

否则没有执行。

executeQuery(sql)是执行查询的。返回一个结果集,我们用ResultSet rs对象来接收。则
ResultSet rs = pstmt.executeQuery();
rs.next()方法类似于IO流,调用rs对象的next()方法把“行光标”向下移动一行。用一个循环即可执行完所有数据的查询。

7.关闭

前面提到的IO流,其实JDBC类似于IO流。与IO流一样,使用后的东西都需要关闭!关闭的顺序是先得到的后关闭,后得到的先关闭。

及先关闭我们的ResultSet rs对象,然后是PreparedStatement pstmt对象,最后是连接连接器。

rs.close();
stmt.close();
con.close();