您的位置:首页 > 其它

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”)字段名称的方式获取该列的值。

常用方法

方法名称功能描述
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: