1、装载驱动
try{
Class.forName("com.mysql.jdbc.Driver");
}catch(Exception){
System.out.print(e.getMessage());
}
}
装载驱动代码只执行一次、再对数据库进行访问时不需要重新装载。
2、建立connection
每次对数据库的访问都需要动态的与数据库创建一个链接,增、删、查、改等都在这个链接下进行。
try{
setCon(DriverManager.getConnection(url,username,password));
}catch(Exception e){
e.printStackTrace();
}
3、创建statement
每一个SQL语句被执行之前都要创建一个statement。
try{
setStmt(getCon().createStatement());
}catch(Exception e){
}
4、执行SQL语句
调用statement对象的executeQuery()方法来执行SQL语句,执行结果被封装在一个ResultSet对象中。
ResultSet re =getStmt().executeQuery(sqlstr);
5、关闭资源
资源使用完后要进行关闭
try{
getStmt().close();
getCon().close();
}catch(Exception e){
e.printStackTrace();
}
例子:JDBC完整实现
public class JdbcTest {
public static void main(String[] args) {
//数据库连接
Connection connection = null;
//预编译的Statement,使用预编译的Statement提高数据库性能
PreparedStatement preparedStatement = null;
//结果 集
ResultSet resultSet = null;
try {
//加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
//通过驱动管理类获取数据库链接
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8", "root", "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(resultSet.getString("id")+" "+resultSet.getString("username"));
}
} catch (Exception e) {
e.printStackTrace();
}finally{
//释放资源
if(resultSet!=null){
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(preparedStatement!=null){
try {
preparedStatement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(connection!=null){
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}