JDBC(Java DataBase Connection),java数据库连接,是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,同时JDBC也是个商标名。
简单地说,JDBC可做三件事:
1、与数据库建立连接;
2、发送操作数据库的语句;
3、处理结果。
JDBC开发的六个基本步骤:(以Mysql数据库为例)
1、加载Driver
2、获得数据库连接(Connection接口)
3、创建Statement(接口,传送sql命令的工具)
4、执行sql();
5、如果执行了select,处理ResultSet(接口,结果集)
6、释放资源
第一步:注册Driver,加载Driver的实现类
Class.forName(“com.mysql.jdbc.Driver”);
第二步:获得Connection
Connection connection = DriverManger.getConnection( url , username, password);
其中String url =" jdbc:mysql:localhost:8081/db01";
DriverManager是Driver的管理者,实际连接db的是Driver
第三步:创建Statement
Statement stm = conn.createStatement();
第四步:执行sql命令
返回boolean值,表示是否有ResultSet返回。true-->有 false-->没有
if( resultSet.next()){ ResultSet rs = stm.getResultSet(); }
2. executeQuery(sql) : 专门执行select(查询语句所用),返回ResultSet
3. executeUpdate(sql) : 专门执行insert update delete(添加,删除,修改操作所用),返回一个int值,表示命令,执行后,表里受到影响的行数
第五步:处理ResultSet
1. next() : 向下一行移动指针,同时返回一个boolean,用来表明当前行是否有数据
2. get**()系列:获取当前的某一列数据。getInt(列的下标) getString getDate getDouble
3. 结果集里的指针开始处于”第一行的上一行“,结束时处于”最后一行的下一行“
第六步:释放资源
按照产生对象逆序释放相关资源 rs --> stm --> conn。
下面给出查询操作和添加操作的代码(修改,删除雷同):
查询代码:
public UserBean findById(int id){
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
try {
connection = getConnection(true);
String sql = "select id,phone,pwd from user where id=?";
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setInt(1, id);
resultSet = preparedStatement.executeQuery();
if(resultSet.next()){
UserBean userBean = new UserBean();
userBean.setId(resultSet.getInt(1));
userBean.setPhone(resultSet.getString(2));
userBean.setPwd(resultSet.getString(3));
return userBean;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {resultSet.close();} catch (SQLException e) {e.printStackTrace();}
try {preparedStatement.close();} catch (SQLException e) {e.printStackTrace();}
try {connection.close();} catch (SQLException e) {e.printStackTrace();}
}
return null;
}
添加代码:
public boolean add(UserBean userBean){
Connection connection = null;
PreparedStatement preparedStatement = null;
try {
connection = getConnection(false);
String sql = "insert into user(phone,pwd) value(?,?)";
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, userBean.getPhone());
preparedStatement.setString(2, MD5Util.getMD5Str(userBean.getPwd()));
preparedStatement.executeUpdate();
connection.commit();
return true;
} catch (Exception e) {
try {connection.rollback();} catch (SQLException e1) {e1.printStackTrace();}
e.printStackTrace();
} finally {
try {preparedStatement.close();} catch (SQLException e) {e.printStackTrace();}
try {connection.close();} catch (SQLException e) {e.printStackTrace();}
}
return false;
}
其中涉及到的connection.commit();属于事件,将在之后的章节中介绍。