主要写一写关于简单建立jdbc连接的相关操作,手动搭建一个简单的用户信息管理系统的jdbc驱动程序来访问数据库并执行一些操作。
主要操作大致分为7个步骤:1.加载驱动 2.创建连接 3.写sql 4.得到statement对象 5.执行sql得到结果集 6.处理结果集 7.关闭
先来看JDBC的连接层,即如何正确建立起JDBC驱动的连接,首先导入jdbc.jar包这里就不重复了,我们主要来看代码:
public static Connection createConn() {
try {
//1.加载驱动
Class.forName("com.mysql.jdbc.Driver");
//2.创建连接
Connection connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/user?useSSL=true&characterEncoding=utf-8&user=root&password=123");
//System.out.println("创建成功");
return connection;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
这里Connection就是JDBC创建的一个对象,就是JDBC抽象出来的数据库访问连接,后面url填写自己数据库的用户密码即可,然后我们将connection作为一个静态的返回值来返回。
然后我们来写sql语句,在建立的connection基础上使用sql操作数据库。我这里以查询为例。
public List<UserInfo> findAll() {
List<UserInfo> list = new ArrayList<>();
PreparedStatement statement = null;
Connection connection = null;
ResultSet rs = null;
Close_Conn Clon = new Close_Conn();
try {
connection = Connect.createConn();
//3.写sql
String sql = "select * from userinfo";
//查询数据
statement = connection.prepareStatement(sql);
//5.执行sql得到结果集
rs = statement.executeQuery();
//6.处理结果集
while (rs.next()) {
UserInfo userInfo = new UserInfo();
userInfo.setId(rs.getInt(1));
userInfo.setName(rs.getString(2));
userInfo.setPassword(rs.getString(3));
list.add(userInfo);
}
} catch (Exception e) {
e.printStackTrace();
//关闭资源
} finally {
Clon.Close_conn(connection, statement, rs);
}
return list;
}
这里对参数进行简单的说明,statement对象就可以用来返回数据库查询的结果,然后调用statement.executeQuery()方法就可以完成对数据的处理结果,然后我们来看最后一步,即关闭连接。
public void Close_conn(Connection conn, PreparedStatement statement, ResultSet rs) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (statement != null) {
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
在关闭连接中我们分层次关闭不同的资源,按照获取连接的顺序,依次反方向关闭连接,代码如上图。
至此我们就完成了JDBC建立数据库操作的过程。
main函数也上传一下,方便调试和使用
public static void main(String[] args) {
UserInfoDAO userInfoDAO = new UserInfoDAO();
List<UserInfo> list = new ArrayList<>();
// userInfoDAO.delete();
list = userInfoDAO.findAll();
System.out.println(list);
}