JDBC笔记(一)基础
2017-12-10 20:33
162 查看
JDBC笔记(一)基础
JDBC笔记一基础JDBC概述
JDBC原理
开发步骤详解
1 注册驱动
2 获得连接
3 获得语句执行者
4 执行sql语句
5 处理结果
6 释放资源
实现第一个JDBC程序
1 搭建数据库环境mysql
表users结构
表数据
2 创建项目环境导入数据库驱动
3 编写JDBC程序
常用API
Driver接口
DriverManager类
Connection接口
Statement接口
PreparedStatement接口
ResultSet接口
javaAPI
java.sql包下
1 JDBC概述
JDBC(Java DataBase Connectivity),Java数据库连接,sun公司推出的Java访问数据库的标准规范(接口)。JDBC是一种用于执行SQL语句的JavaAPI。
JDBC可以为多种关系数据库提供统一访问入口。
JDBC由一组Java工具类和接口组成。
2 JDBC原理
由SUN提供一套访问数据库的规范(就是一组接口),并提供连接数据库的协议标准,然后各个数据库厂商会遵循SUN的规范提供一套访问自己公司的数据库服务器的API出现。SUN提供的规范命名为JDBC
各个厂商提供的,遵循了JDBC规范的,可以访问自己数据库的API被称之为驱动
JDBC是接口,而JDBC驱动才是接口的实现,没有驱动无法完成数据库连接!每个数据库厂商都有自己的驱动,用来连接自己公司的数据库。
3 开发步骤详解
3.1 注册驱动
JDBC规范定义驱动接口:java.sql.Driver。MySql驱动包提供了实现类:com.mysql.jdbc.Driver。
第1种(不推荐使用):
// DriverManager.registerDriver(Driver driver); DriverManager.registerDriver(new com.mysql.jdbc.Driver());
硬编码,后期不易于程序扩展和维护。
驱动被注册两次。com.mysql.jdbc.Driver类在源码中自己注册一次。
第2种:
// Class.forName("DriverName"); Class.forName("com.mysql.jdbc.Driver");
开发中,通常使用Class.forName()加载一个使用字符串描述的驱动。
3.2 获得连接
Connection con=DriverManager.getConnection(url,username,password);
url:需要连接数据库的位置(网址)
jdbc:mysql://localhost:3306/jdbc
JDBC规定url的格式由三部分组成,每个部分使用冒号分割:
第一部分是jdbc,这个是固定的;
第二部分是数据库名称,列中连接的是mysql数据库,故写mysql;
第三部分是有数据库厂商规定的,我们需要了解每个厂商的要求,mysql的第三部分分别由数据库服务器端的ip地址(localhost)、端口号(3306)、以及DATABASE(jdbc)名称组成。
username:用户名
password:密码<
d100
/li>
3.3 获得语句执行者
3.4 执行sql语句
3.5 处理结果
3.6 释放资源
4 实现第一个JDBC程序
4.1 搭建数据库环境(mysql)
表(users)结构表数据
4.2 创建项目环境,导入数据库驱动
4.3 编写JDBC程序
package com.hkls.jdbcdemo; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.sql.Date; import java.sql.Connection; import org.junit.Test; public class Demo { Connection con = null; Statement st = null; ResultSet rs = null; @Test public void demo() throws SQLException{ try { // 1 注册数据库的驱动 Class.forName("com.mysql.jdbc.Driver"); // 2 通过DriverManager获得数据库连接 String url = "jdbc:mysql://localhost:3306/jdbc"; String username = "root"; String password = ""; con=DriverManager.getConnection(url,username,password); // 3 通过Connection对象获得语句执行者Statement对象 st = con.createStatement(); // 4 使用Statement执行SQL语句 String sql = "select * from users"; rs=st.executeQuery(sql); // 5 操作ResultSet结果集,输出结果 System.out.println("id | name |psw | email | birthday"); while(rs.next()){ int id = rs.getInt("id"); String name = rs.getString("name"); String psw = rs.getString("password"); String email = rs.getString("email"); Date birthday = rs.getDate("birthday"); System.out.println(id+"|"+name+"|"+psw+"|"+email+"|"+birthday); } } catch (ClassNotFoundException e) { e.printStackTrace(); } finally{ // 6 释放数据库资源 if(rs!=null){ try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } rs = null; } if(st!=null){ try { st.close(); } catch (SQLException e) { e.printStackTrace(); } st = null; } if(con!=null){ try { con.close(); } catch (SQLException e) { e.printStackTrace(); } con = null; } } } }
控制台输出
5 常用API
Driver接口
Driver接口是所有JDBC驱动程序必须实现的接口,该接口专门提供给数据库厂商使用。DriverManager类
DriverManager类用于加载JDBC驱动并且创建与数据库的连接。其中,定义了两个比较重要的静态方法。
方法名称 | 功能描述 |
---|---|
registerDriver(Driver driver) | 该方法用于向DriverManager中注册给定的JDBC驱动程序 |
getConnection(String url,String pwd) | 该方法用于建立和数据库的连接,并返回表示连接的Connection对象 |
Connection接口
Connection接口代表Java程序和数据库的连接,只有获得该连接对象后才能访问数据库,并操作数据表。常用方法
方法名称 | 功能描述 |
---|---|
getMetaData() | 该方法用于返回表示数据库的元数据的DatabaseMetaData对象 |
createStatement() | 用于创建Statement对象并将SQL语句发送大数据库 |
prepareStatement(Sting sql) | 用于创建一个PrepareStatement对象并将参数化的SQL语句发送到数据库 |
prepareCall(Sting sql) | 用于创建一个CallableStatement对象来调用数据库的存储过程 |
Statement接口
Statement接口用于执行静态的SQL语句,并返回一个结果对象,该接口的对象通过Connection实例的createStatement方法获得。利用该方法把静态的SQL语句发送到数据库编译执行,然后返回数据库的处理结果。常用的执行SQL语句的方法
方法名称 | 功能描述 |
---|---|
execute(String sql) | 用于执行各种SQL语句,该方法返回一个Boolean类型的值,如果为true,表示所执行的SQL语句有查询结果,可通过Statement的getResult()方法获得查询结果 |
executeUpdate(String sql) | 用于执行SQL中的insert、update和delete语句。该方法返回一个int类型的值,表示数据库中受该SQL语句影响的记录条数 |
executeQuery(String sql) | 用于执行SQL中的select语句,该方法返回一个表示查询结果的ResultSet对象 |
PreparedStatement接口
在实际开发中往往需要将程序中的变量作为SQL语句的查询条件,而使用Statement接口操作这些SQL语句会过于繁琐,并且存在安全问题。针对这一问题,JDBC API提供了扩展的PrepareStatement接口。PrepareStatement是Statement的子接口,用于执行预编译的SQL语句。该接口扩展了带有参数SQl语句的执行操作,应用该接口中的SQL语句可以使用占位符“?”来代替其参数,然后通过setXxx()方法为SQL语句的参数赋值。
常用方法
方法名称 | 功能描述 |
---|---|
ResultSet接口
ResultSet接口用于保存JDBC执行查询时返回的结果集,该结果集封装在一个逻辑表格中。在ResultSet接口内部有一个指向表格数据行的游标(或指针),ResultSet对象初始化时,游标在表格的第1行之前,调用next()方法可将游标移动到下一行。如果下一行没有数据,则返回false。在应用程序中经常用next()方法作为while循环的条件来迭代ResultSet结果集。ResultSet接口中定义了大量的getXxx()方法,而采用哪种getXxx()方法取决于字段的数据类型。程序既可以通过字段的名称来获取指定数据,也可以通过字段的索引来获取指定数据,字段是索引是从1开始的。例如,数据表的第1列字段名为id,字段类型为int,那么既可以使用getInt(1)字段索引的方式获取该列的值,也可以使用getInt(“id”)字段名称的方式获取该列的值。
常用方法
方法名称 | 功能描述 |
---|---|
相关文章推荐
- [Java基础笔记]JDBC初步
- Java_jdbc 基础笔记之五 数据库连接 (ResultSet)
- Java基础学习笔记二十六 JDBC
- 【JDBC笔记】JDBC基础知识
- JDBC三(web基础学习笔记九)
- JDBC五数据源和数据池(web基础学习笔记十一)
- Java_jdbc 基础笔记之六 数据库连接 (PreparedStatement)
- JAVA基础笔记3--JDBC入门
- JDBC基础学习笔记_01JDBC基础简介
- Java_jdbc 基础笔记之九 数据库连接 (查询Customer对象的方法)
- JDBC 学习笔记(一)—— 基础知识 + 分页技术
- Java_jdbc 基础笔记之三 数据库连接 (Statement)
- Java_jdbc 基础笔记之十四 数据库连接(元数据)
- JDBC 学习笔记(一)—— 基础知识 + 分页技术
- Java_jdbc 基础笔记之八 数据库连接(写一个查询Student对象的方法)
- Java_jdbc 基础笔记之十五 数据库连接(取得数据库自动生成的主键)
- Java_jdbc 基础笔记之七 数据库连接(方法升级)
- java_jdbc基础笔记
- Java_jdbc 基础笔记之十一数据库连接 (通用的查询方法)
- java学习笔记:JDBC基础——JDBC创建的六个步骤