JDBC

1. jdbc

  java api,由一套接口组成,提供了关系型数据库统一访问。

  java.sql,javax.sql包

2. 开发步骤

1) DriverManager注册驱动

2) 建立连接(jdbc)

3) 发送sql给服务器

4) 接收响应并处理

5) 释放资源

3. 入门案例

//1.注册驱动,DriverManager管理具体的驱动程序,实现对底层屏蔽,对开发人员提供统一访问。

//java.sql.Driver: jdbc的接口

//com.mysql.jdbc.Driver: mysqljdbcDriver接口实现类

DriverManager.registerDriver(new Driver());

//2.建立连接  java.sql.Connection

conn = DriverManager.getConnection(

"jdbc:mysql://localhost:3306/bd1807?useSSL=true",

"root",

"root");

//3.发送sql给数据库服务

String sql = "select * from userinfo";

//Statement对象:实现sql发送

stmt = conn.createStatement();

rs = stmt.executeQuery(sql);

//4.处理响应结果(ResultSet底层维护了一个指向结果集的游标)

while(rs.next()){  //向前移动游标(遍历一行)

//获取游标指向行的字段的信息(遍历每列)

int uid = rs.getInt("uid");

String uname = rs.getString("uname");

String password = rs.getString("password");

System.out.printf("uid:%s,uname:%s,password:%s ",uid,uname,password);

}

4. 常见API详解

1) DriverManager(java.sql,)

提供驱动的基础服务,对驱动实现细节进行屏蔽;

注册加载驱动;用于获取连接。

DriverManager.registerDriver(new Driver());

Class.forName("com.mysql.jdbc.Driver");

//建议使用第二种

conn = DriverManager.getConnection(

"jdbc:mysql://localhost:3306/bd1807?useSSL=true",

"root",

"root");

6) Connection(java.sql 接口)

代表客户端程序与数据库服务的连接,与数据的交互都需要依赖于此连接。

CreateStatement:创建发送sql的statement对象

prepareStatement():创建预编译sql的preparedStatement对象

setAutocommit():设置事务自动提交

commit():手动提交事务

rollback():手动回滚事务

//获取连接的元数据信息

DatabaseMetaData md = conn.getMetaData();

System.out.println(md.getDatabaseProductName())

System.out.println(md.getDriverName());

System.out.println(md.getURL());

System.out.println(md.getUserName());

7) Statement以及子接口(java.sql 接口)

发送sql命令

executeQuery():用于发送查询的sql语句

executeUpdate():用于发送增删改的sql语句

execute():用于发送任意的sql语句

addBatch():把多条sql语句添加到批处理命令中

execteBatch():用于执行批处理命令

8) ResultSet(接口)

代表返回结果的结果集。底层维护游标,next()移动游标获取每一行数据。

Next():游标向前

getString()/getInt()/getObject():获取某行中某个字段值

//获取结果集的元数据

ResultSetMetaData md = rs.getMetaData();

//获取列

int count = md.getColumnCount();

//String name = md.getColumnName(column);

//遍历获取每一个字段的名称

//类属性和表字段保持一致

//用于封装对象

5. 增删改查

1) statement存在sql注入风险(sql采用字符串拼接方式)

9) PreparedStatement

Statement接口的子接口。

Connection conn = null;

PreparedStatement ps = null;

ResultSet rs = null;

try {

Class.forName("com.mysql.jdbc.Driver");

conn = DriverManager.getConnection(

"jdbc:mysql:///bd1807",

"root",

"root");

//3.创建PreparedSatement发送sql

String sql = "select * from userinfo where uname = ? and password = ?";

//预编译(语法语义检查)

ps = conn.prepareStatement(sql);

//赋值

ps.setString(1, uname);

ps.setString(2, password);

rs = ps.executeQuery();

//4.处理结果

if(rs.next()){

System.out.println("登陆成功");

}else{

System.out.println("登录失败");

}

} catch (ClassNotFoundException e) {

e.printStackTrace();

} catch (SQLException e) {

e.printStackTrace();

}finally{

try {

if(rs != null){

rs.close();

}

if(ps != null){

ps.close();

}

if(conn != null){

conn.close();

}

} catch (SQLException e) {

e.printStackTrace();

}

}

6. dao开发

dao:data access object

  javaee分层开发中主要负责对数据库表操作的内容。

  由接口和具体实现类组成。

  接口声明规范;实现类可以有多个,对规范方法进行实现。

7. 外部配置文件

原文地址:https://www.cnblogs.com/fax1996/p/9556232.html