时间:2021-07-01 10:21:17 帮助过:11人阅读
1.JDBC概念
快速入门连接
注意:最核心的就是sql语句,因为其他的基本上都是不变的,只有sql语句变得多啊
回忆昨天:
介绍JDBC快速入门使用到的包和类
java.sql:所有与JDBC访问数据库相关的数据和接口都在此包之中
DriverManager;是一个类 , 驱动管理功能,注册驱动,获取数据库链接对象
Connection;是一个接口 , 连接对象,用于创建执行sql对象Statement,PreparedStatement对象
Statement;是一个接口,,,sql语句执行对象,用于将sql语句发送个数据库服务器
PreparedStatement: sql语句执行对象
ResultSet :是一个接口,结果集,把数据库查询出来的数据封装到集合里面
javax.sql:用到数据库连接池,是数据库扩展包,提供数据库一些额外操作,比如:连接池
DriverManager
从JDBC3往后,我们可以不用写注册驱动,也就是Class.forName,但是还是建议书写
Connection DriverManager.getConnection(url,user,password):可以获得数据库的连接对象
也可以通过Connection DriverManager.getConnection(String url,Properties info):通过连接字符串和属性对象,可以获得数据库的连接对象
Connection接口
作用:连接数据库,是一个接口,由具体的厂商提供具体的实现类,代表一个连接对象
PreparedStatement
- 操作:
释放资源
常用数据库数据类型和Java类型对照
sql | jdbc方法 | java |
---|---|---|
int | getInt() | int |
bigInt | getLong() | long |
bit | getBoolean() | boolean |
varchar | getString() | String |
date/time/TimeStamp | getDate/getTime/getTimeStamp | java.util.Date/java.sql.Time/java.sql.Timestamp |
double | getDouble() | double |
备注:java.sql.Date/Time/TimeStamp(时间戳)三个共同的父类是----->java.util.Date
数据库工具类 DBUtil
`
// 数据库工具类
public class DBUtil {
// 定义四个常量值
private static final String DRIVER = "com.mysql.jdbc.Driver";
private static final String URL = "jdbc:mysql:///java31?characterEncoding=utf8";
private static final String USER = "root";
private static final String PASSWORD = "root";
// 定义JDBC常用类和接口
private static Connection con = null;
private static Statement st = null;
private static PreparedStatement ps = null;
private static ResultSet set = null;
static {
try {
Class.forName(DRIVER);
con = DriverManager.getConnection(URL, USER, PASSWORD);
} catch (Exception e) {
e.printStackTrace();
}
}
// 针对查询的功能
public static ResultSet select(String sql,Object[] args) {
//String sql2 = "select * from account where u_name = ? and password = ?";
try {
// 获取预处理对象
ps = con.prepareStatement(sql);
// 使用sql语句中的占位符 ?
// 遍历数组
// 占位符 在sql中是有前后顺序的 u_name对应的问号 索引是 1 password对应的问号就是2
for (int i = 0; i < args.length; i++) {
// 把问号提换成具体的数据
ps.setObject(i+1, args[i]);
}
// 执行sql语句 获取结果值
set = ps.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
}
return set;
}
// 针对更新的功能 insert update delete executeUpdate()
public static int update(String sql,Object[] args) {
// 获取预处理对象
// 定义一个变量 用来记录印象数据库表的行数
int count = 0;
try {
ps = con.prepareStatement(sql);
// 使用sql语句中的占位符 ?
// 遍历数组
// 占位符 在sql中是有前后顺序的 u_name对应的问号 索引是 1 password对应的问号就是2
for (int i = 0; i < args.length; i++) {
// 把问号提换成具体的数据
ps.setObject(i+1, args[i]);
}
// 执行sql语句 获取结果值
count = ps.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 返回给调用处
return count;
}
// 关闭连接的方法
public static void closeAll() {
// 关闭时 先关闭ResultSet
if (set != null) {
try {
set.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (st != null) {
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (con != null) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
`
表与类的关系
model类
Account类
表与实体类的对应关系如图所示:
项目分层
? 合理的分层能够使项目的开发和维护更方便
2021.1.6 - JDBC - JDBC使用的常用类 - JDBC中涉及到的各个接口 - JDBC事务
标签:多表 乱码 png turn tin user 主表 接口 个数