基本思想:
1、加载数据库驱动
2、建立与数据库的连接
3、建立预编译statement对象
4、查询结果,将查询结果放入结果集
5、循环读出结果集中的内容
具体代码如下:
public static void main(String[] args) {
//数据库链接
Connection connection = null;
//预编译的statement,使用预编译的statement提高数据库的性能
//(通过statement向数据库发送一条sql,数据库进行编译(sql语句),数据库编译的的结果放在数据库的缓存,下一次再发sql,若结果相同,不用再编译)
PreparedStatement preparedStatement = null;
//结果集
ResultSet resultSet = null;
try {
//加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
//通过驱动管理类获取数据库链接
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?characterEncoding=utf-8", "root", "root");
//定义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(resultSet.getString("id")+" "+resultSet.getString("username"));
}
} catch (Exception e) {
e.printStackTrace();
}finally{
//释放资源(倒着释放,先释放结果集,再释放statement,再释放connection)
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();
}
}
}
}