传统的jdbc操作数据库基本流程如下:
但是却也如图中所示存在着一些小小的bug,如何解决这些问题呢?图中提出了一些设想,具体的解决方案请看本人的:springmvc之mybatis操纵数据库
一下是本文的全部代码:
package store.cloudspace.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
*
* @ClassName: testUser
* @Description:TODO(testUser)
* @author: MyLover
* @date: 2018年11月21日 下午11:19:15
* @Copyright: 2018 www.tydic.com Inc. All rights reserved.
*
*/
public class jdbcTest {
public static void main(String[] args) {
//定义链接
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
try {
// 加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
try {
// 通过驱动管理类获取数据库链接
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis?charcterEncoding=utf-8",
"这里写你的mysql的登录名", "这里写你的mysql的登录密码");
// 定义sql语句,?表示占位符
String sql = "select * from user where username = ?";
// 获取预处理statement
preparedStatement = connection.prepareStatement(sql);
// 设置参数,第一个参数为sql语句中的参数序号,从1开始,第二个参数为设置的参数值
preparedStatement.setString(1, "慕容敬天");
//向数据库发出sql执行查询,查询出结果集
resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
System.out.println("id:"+resultSet.getString("id") + "\n username:"+resultSet.getString("username"));
}
} catch (SQLException e) {
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} finally {//倒序释放资源
if (resultSet != null) {
try {
resultSet.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (preparedStatement != null) {
try {
preparedStatement.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}