常用的接口和类
Connection接口:用于连接数据库
Statement和PreparedStatement:用于数据库增删改查
ResultSet:接收和处理查询结果
DriverManager:驱动管理类
JDBC程序的编写步骤
注册驱动:将数据库驱动加载到内存中并初始化
- 把jar放到项目的libs中
- 把jar添加到build path中 ,在jar包上选择右键,Build Path—>Add to Build Path
- 在代码中注册驱动
连接数据库:使用DriverManager和Connection
操作数据库
- 增、删、改:Statement或PreparedStatement
- 查询:Statement或PreparedStatement
- 结果处理:ResultSet
-
URL说明
url:统一资源定位符,通俗的讲就是网址
url标准格式:协议://主机名:端口号/资源路径
对于mysql来说:
向数据库中添加一条记录代码演示 ```java package com.wisdom.java;
import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement;
public class InsterJDBCTest01 { public static void main(String[] args) throws Exception{ // 1. 注册驱动程序 Class.forName(“com.mysql.jdbc.Driver”);
// 2. 连接数据库
String url = "jdbc:mysql://192.168.160.131:3306/subquery";
Connection conn = DriverManager.getConnection(url, "root", "数据库密码");
// 3. 操作数据库
// a. 在dept表中添加一条数据
String sql = "insert into dept values(60,'MANAGERE','BJ')";
// b. 创建用来执行SQL语句的Statement对象
Statement st = conn.createStatement();
// c. 使用Statement对象执行数据,返回结果就是影响数据库的行数
int len = st.executeUpdate(sql);
// d. 判断是否执行成功
System.out.println(len>0?"添加成功":"添加失败" );
// 4. 释放资源
st.close();
conn.close();
}
}
2. 根据键盘输入,将用户输入的信息添加至数据库
```java
package com.wisdom.java;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.util.Scanner;
public class InsertJDBCTest02 {
public static void main(String[] args) throws Exception{
// 0. 获取用户输入
Scanner sc = new Scanner(System.in);
System.out.print("请输入部门编号 :");
int deptNo = sc.nextInt();
System.out.print("请输入部门名称 :");
String deptName = sc.next();
System.out.print("请输入部门所在地 :");
String deptLoc = sc.next();
// 1. 注册驱动
Class.forName("com.mysql.jdbc.Driver");
// 2. 连接数据库
String url = "jdbc:mysql://192.168.160.131:3306/subquery";
Connection conn = DriverManager.getConnection(url,"root","数据库密码");
// 3. 操作数据库
// a. 在dept表中根据用户输入插入一条数据
String sql = "insert into dept values(" + deptNo + ",'" + deptName + "','" + deptLoc + "')";
// b. 创建用来执行SQL语句的Statement对象
Statement st = conn.createStatement();
// c. 执行语句
int len = st.executeUpdate(sql);
System.out.println(len>0?"插入成功":"插入失败");
st.close();
conn.close();
}
}
删除数据
- 删除一条记录 ```java package com.wisdom.java;
import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement;
public class DeleteJDBCTest01 { public static void main(String[] args) throws Exception{ // 1. 注册驱动 Class.forName(“com.mysql.jdbc.Driver”);
// 2. 连接数据库
String url = "jdbc:mysql://192.168.160.131:3306/subquery";
Connection conn = DriverManager.getConnection(url, "root", "数据库密码");
// 3. 操作数据库
String sql = "delete from dept where deptno = 70";
Statement st = conn.createStatement();
int len = st.executeUpdate(sql);
System.out.println(len>0?"删除成功":"删除失败");
// 4. 关闭对应资源
st.close();
conn.close();
}
}
<a name="F8w8J"></a>
### 修改数据
1. 修改一条记录
```java
package com.wisdom.java;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class UpdateJDBCTest01 {
public static void main(String[] agrs) throws Exception{
// 1. 注册驱动
Class.forName("com.mysql.jdbc.Driver");
// 2. 连接数据库
String url = "jdbc:mysql://192.168.160.131:3306/subquery";
Connection conn = DriverManager.getConnection(url, "root", "数据库密码");
// 3. 操作数据库
String sql = "update dept set loc = 'TJ' where deptno = 60";
Statement st = conn.createStatement();
int len = st.executeUpdate(sql);
System.out.println(len>0?"修改成功":"修改失败");
// 4. 关闭 数据库
st.close();
conn.close();
}
}
查询数据
- 查询数据 ```java package com.wisdom.java;
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement;
import org.junit.Test;
public class SelectJDBCTest01 { /*
* 查询所有数据
* */
@Test
public void select01() throws Exception{
// 1. 加载驱动
Class.forName("com.mysql.jdbc.Driver");
// 2. 连接数据库
String url = "jdbc:mysql://192.168.160.131:3306/subquery";
Connection conn = DriverManager.getConnection(url,"root","数据库密码");
// 3. 操作数据库
String sql = "select * from dept";
Statement st = conn.createStatement();
ResultSet rs= st.executeQuery(sql);
// 4. 遍历结果集
while(rs.next()){
int deptno = rs.getInt("deptno");
String dname = rs.getString("dname");
String loc = rs.getString("loc");
System.out.println(deptno + "\t" + dname + "\t" + loc);
}
// 5. 关闭数据库连接
rs.close();
st.close();
conn.close();
}
/*
* 查询某几列
* */
@Test
public void select02() throws Exception{
// 1. 加载驱动
Class.forName("com.mysql.jdbc.Driver");
// 2. 连接数据库
String url = "jdbc:mysql://192.168.160.131:3306/subquery";
Connection conn = DriverManager.getConnection(url,"root","数据库密码");
// 3. 操作数据库
String sql = "select deptno,dname from dept";
Statement st = conn.createStatement();
ResultSet rs= st.executeQuery(sql);
// 4. 遍历结果集
while(rs.next()){
int deptno = rs.getInt("deptno");
String dname = rs.getString("dname");
System.out.println(deptno + "\t" + dname );
}
// 5. 关闭数据库连接
rs.close();
st.close();
conn.close();
}
/*
* 按照列索引查询
* */
@Test
public void select03() throws Exception{
// 1. 加载驱动
Class.forName("com.mysql.jdbc.Driver");
// 2. 连接数据库
String url = "jdbc:mysql://192.168.160.131:3306/subquery";
Connection conn = DriverManager.getConnection(url,"root","数据库密码");
// 3. 操作数据库
String sql = "select deptno,dname,loc from dept";
Statement st = conn.createStatement();
ResultSet rs= st.executeQuery(sql);
// 4. 遍历结果集
while(rs.next()){
// 1就代表第一个字段
int deptno = rs.getInt(1);
String dname = rs.getString(2);
String loc = rs.getString(3);
System.out.println(deptno + "\t" + dname + "\t" + loc );
}
// 5. 关闭数据库连接
rs.close();
st.close();
conn.close();
}
/*
* 也可以用Object代替数据类型
* */
@Test
public void select04() throws Exception{
// 1. 加载驱动
Class.forName("com.mysql.jdbc.Driver");
// 2. 连接数据库
String url = "jdbc:mysql://192.168.160.131:3306/subquery";
Connection conn = DriverManager.getConnection(url,"root","数据库密码");
// 3. 操作数据库
String sql = "select deptno,dname,loc from dept";
Statement st = conn.createStatement();
ResultSet rs= st.executeQuery(sql);
// 4. 遍历结果集
while(rs.next()){
System.out.println(rs.getObject(1) + "\t" + rs.getObject(2) + "\t" + rs.getObject(3) );
}
// 5. 关闭数据库连接
rs.close();
st.close();
conn.close();
}
}
```