概述
JDBC(Java DataBase Connectivity) Java 数据库连贯,其实就是利用 java 语言 / 程序连贯并拜访数据库的一门技术,之前咱们能够通过 CMD 或者 navicat 等工具连贯数据库,但在企业开发中,更多的是通过程序 (java 程序) 连贯并拜访数据库, 通过 java 程序拜访数据库,就要用到 JDBC 这门技术。
拜访数据库
(1)注册数据库驱动
Class.forName(com.mysql.jdbc.Driver);
(2) 获取数据库连贯
Connection conn=DirverManager.getConnection
(“jdbc:mysql://localhost:3306/test?characterEncoding”,”root”,”root”)
(3) 获取传输器
Statement stat = conn.createStatement();
(4) 发送 SQL 到服务器执行并返回执行后果
String sql =”select * from account”;
ResultSet rs = stat.executeQuery(sql);
(5) 处理结果
while(rs.next()){
int id = rs.getInt(“id”);
String name = rs.getString(“name”);
double money = rs.getDouble(“money”);
System.out.println(id+”:”+name+”:”+money);}
(6) 开释资源
rs.close();
stat.close();
conn.close();
System.out.println(“Testjdbc.main()….”);
罕用 API
(1)注册数据库驱动
Class.forName(“com.mysql.jdbc.Driver”);
所谓的注册驱动,就是让 JDBC 程序加载 mysql 驱动程序,并治理驱动
驱动程序实现了 JDBC API 定义的接口以及数据库服务器的交互的性能,加载驱动是为了方便使用这些性能。
(2)获取连贯数据库的 URL
Connection conn = DriverManager.getConnection
(“jdbc:mysql://localhost:3306/test?characterEncoding”,”root”,”root”);
DriverManager.getConnection()用于获取数据连贯, 返回的 Connection 连贯对象是 JDBC 程序连贯数据库至关重要的一个对象。
参数 1:”jdbc:mysql://localhost:3306/test” 是连贯数据库的 URL, 用于指定拜访哪一个地位上的数据库服务器及服务器中的哪一个数据库,具体为:
当连贯本地数据库,并且端口为 3306,能够简写为如下模式:
jdbc:mysql:///test
(3)Statement 传输器对象
Statement stat = conn.createStatement();
该办法返回用于向数据库服务器发送 sql 语句的 statement 传输器对象
该对象提供了发送 sql 的办法:
executeQuery(String sql)–
用于向数据库发送查问类型的 sql 语句,返回一个 ResultSet 对象中
executeUpdate(String sql)–
用于向数据库发送更新 (减少,删除,批改) 类型的 sql 语句,返回一个 int 值,示意影响的行数
(4)ResultSet 后果集对象
ResultSet 对象用于封装 sql 语句查问的后果,也是一个十分重要的对象。该对象上提供了遍历数据及获取数据的办法。
– 遍历数据行的办法 –
next()- 使指向数据行的箭头向下挪动一行,并返回一个布尔类型的后果,true 示意箭头指向了一行数据,false 示意箭头没有指向任何数据(前面也没有数据了)
– 获取数据的办法 –
getInt(int columnIndex)
getInt(String columnLable)
getString(int columnIndex)
getString(String columnLable)
getDouble(int columnIndex)
getDouble(String columnLable)
getObject(int columnIndex)
getObjct(String columnLable)
– 开释资源 –
rs.close();
stat.close();
conn.close();
增删改查示例
新增:往 simulation 表中增加一个名称为 john,money 为 3500 的记录
@Test
public void testInsert() {
Connection conn = null;
Statement stat = null;
ResultSet rs = null;
try{
// 注册驱动并获取连贯
conn = jdbcUtil.getConn();
// 获取传输器
stat = conn.createStatement();
// 发送 sql 语句到服务器执行,并返回执行后果
String sql = "insert into simulation values(null,"john",3500)";
// 处理结果
System.out.println("影响行数:"+rows);
}catch(Exception e){e.printStackTrace();
}finally{
// 通过 jdbcUtil 工具类中的 close 办法开释资源
jdbcUtil.close(conn,stat,rs);
}
}
批改: 将 simulation 表中名称为 john 的记录,money 批改为 1500 元
@Test
public void testUpdate(){
Connection conn = null;
Statement stat = null;
ResultSet rs = null;
try{
// 通过工具类注册数据库并获取连贯
conn = jdbcUtil.getConn();
// 获取传输器
stat = conn.createStatement();
// 发送 sql 语句到服务器执行,并返回执行后果
String sql = "update account set money=1500 where name ='john'";
// 处理结果
System.out.println("影响行数"+rows);
} catch(Exeption e){e.printStackTrace();
}finally{
// 通过工具类中的 close 办法开释资源
jdbcUtil.close(conn,stat,rs);
}
}
查问: 查问 account 表中 id 为 1 的记录
@Test
public void testFindById(){
Connection conn = null;
Statement stat = null;
ResultSet rs = null;
try{
// 通过工具类注册驱动并获取连贯
conn = jdbcUtil.getConn();
// 获取传输器
stat = conn.createStatement();
// 执行 sql 语句,返回执行后果
String sql = "select * from account where id=1";
// 处理结果
if(rs.next()){int id = rs.getInt("id");
String name = rs.getString("name");
double money = rs.getDouble("money");
System.out.println(id+":"+name+":"+money);
}catch(Exception e){e.printStackTrace();
}finally{jdbcUtil.close(conn,stat,rs);
}
}
删除:删除 account 表中名称为 john 的记录
@Test
public void testDelete(){
Connection conn =null;
Statement stat = null;
ResultSet rs = null;
try{
// 通过 jdbcUtil 工具类注册驱动并获取连贯
conn = jdbcUtil.getConn();
// 获取传输器
stat = conn.createStatement();
// 发送 sql 语句到服务器执行,并返回执行后果
String sql = "delete from account where name='john'";
int rows = stat.executeUpdate(sql);
// 处理结果
System.out.println("影响行数:"+rows);
}catch(Exception e){e.printStackTrace();
}finally{
// 通过 jdbcUtil 工具类中的 close 办法开释资源
jdbcUtil.close(conn,stat,rs);
}
}
PrepareStatement
在下面的增删改查操作中,应用的是 Statement 传输器对象,而在开发中咱们用的更多的传输器对象是 PreparedStatement 对象,PreparedStatement 是 Statement 的子接口,比 Statement 更加平安,并且可能进步程序执行的效率。
小结
总的来说 JDBC 就是 Java 数据库连贯,用来标准客户端程序如何来拜访数据库的,提供了诸如查问和更新数据库中数据的办法,咱们通常说的 JDBC 是面向关系型数据库的。