jdbc连接数据库
1.概念
-
数据库是用于管理数据的,后台是用于根据业务做逻辑处理的,前台显示数据并进行交互
-
驱动包:DriverManager(驱动管理-注册驱动)、Statement(编译及执行SQL语句)、ResultSet(处理结果集)
2.步骤:
1、关联数据库驱动包(不同的数据库使用的驱动包是不一样的)
2、注册驱动(通过反射进行驱动的注册)
3、连接数据库获取数据库连接对象(登录-选择数据库的过程)
4、执行SQL语句
5、处理结果集
6、关闭数据库连接对象
3.关键词:
关键词:DriverManager(管理JDBC驱动)、Statement(用于SQL的编译及执行)/PreparedStatement(预编译)/CallableStatement(执行存储过程)、ResultSet(结果集)
4. JDBC增删改查
如果在执行修改动作时出现乱码,是因为开发工具的编码与数据库中的编码不一致导致的,数据库的编码大多数为UTF-8,所以在连接的地址上去设置编码即可,针对5.1及8.0的版本不同,设置编码的方式为:
8.0:jdbc:mysql://localhost:3306/tongbai?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
5.1:jdbc:mysql://localhost:3306/tongbai?characterEncoding=UTF-8
private static final String DRIVER = "com.mysql.cj.jdbc.Driver";
private static final String URL = "jdbc:mysql://localhost:3306/tongbaishan?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai";
private static final String USER = "root";
private static final String PASSWORD = "root";
public static void main(String[] args) {
String sql = "update emp set ename='马飞飞' where eno=1";
int result = DBUtil.curdMethod(sql);
System.out.println(result);
}
/**
* 删除
*/
public static void delete() {
Connection conn = null;
Statement statement = null;
try {
Class.forName(DRIVER);
conn = DriverManager.getConnection(URL,USER,PASSWORD);
String sql = "delete from emp where eno=14";
statement = conn.createStatement();
int result = statement.executeUpdate(sql);
System.out.println(result);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(statement != null) {
statement.close();
}
if(conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 修改
*/
public static void update() {
Connection conn = null;
Statement statement = null;
try {
Class.forName(DRIVER);
conn = DriverManager.getConnection(URL,USER,PASSWORD);
String sql = "update emp set ename='马飞' where eno=1";
statement = conn.createStatement();
int result = statement.executeUpdate(sql);
System.out.println(result);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
if(statement != null) {
statement.close();
}
if(conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 添加数据
*/
public static void insert() {
Connection conn = null;
Statement statement = null;
try {
Class.forName(DRIVER);
conn = DriverManager.getConnection(URL,USER,PASSWORD);
String sql = "insert into emp values(8,'赵佳奇','男','1999-01-24','13496784687',40)";
statement = conn.createStatement();
int result = statement.executeUpdate(sql);
System.out.println(result);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
if(statement != null) {
statement.close();
}
if(conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 查询功能
*/
public static void query() {
Connection conn = null;
Statement statement = null;
ResultSet rs = null;
try {
//注册驱动
Class.forName(DRIVER);
//登录数据库获取连接对象
conn = DriverManager.getConnection(URL, USER, PASSWORD);
//定义SQL
String sql = "select ename,eno,birthday,sex,phone,dno from emp limit 0,5";
//执行SQL 需要Statement对象
statement = conn.createStatement();
//执行SQL获取结果集
rs = statement.executeQuery(sql);
//遍历结果集(查询的过程中,可能会出现查询结果为空)
while(rs.next()) {//判断是否有下一个元素,每次循环都代表一行数据
//获取元素一行中的列
/*int eno = rs.getInt("eno");
String ename = rs.getString("ename");
String sex = rs.getString("sex");
Date birthday = rs.getDate("birthday");
String phone = rs.getString("phone");
int dno = rs.getInt("dno");*/
int eno = rs.getInt(2);
String ename = rs.getString(1);
String sex = rs.getString(4);
Date birthday = rs.getDate(3);
String phone = rs.getString(5);
int dno = rs.getInt(6);
System.out.println(eno+"--"+ename+"--"+sex+"--"+birthday+"--"+phone+"--"+dno);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
//关闭数据库连接对象
try {
if(rs != null) {
rs.close();
}
if(statement != null) {
statement.close();
}
if(conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
5. 总结
- 增删改查四个功能的相同点和不同点
- 相同点:
- 1、注册驱动
- 2、连接数据库
- 3、关闭数据库
- 不同点:
- 1、SQL语句不同
- 2、结果集不同
- 增删改的异同点
- 相同:
-
1、注册驱动
-
2、连接数据库
-
3、执行SQL方式
-
4、关闭数据库
- 不同点:
-
1、SQL语句不同