第一步:注册驱动
注册驱动有两种方式:
第一种方式
//创建驱动对象
java.sql.Driver driver = new com.mysql.jdbc.Driver();
//完成驱动注册
DriverManager.registerDriver(driver);
第二种方式
//将com.mysql.jdbc.Driver这个类加载到虚拟机中,加载过程中自动执行静态代码块完成驱动注册。
Class.forName("com.mysql.jdbc.Driver");
第二步:获取数据库连接对象
//数据库的url
String url = "jdbc:mysql://localhost:3306/mydatabase";
String user = "root";
String password = "123456";
//获取数据库连接对象
Connection connection = DriverManager.getConnection(url, user, password);
第三步:获取数据库操作对象
//获取数据库操作对象,可以通过连接对象获取多个操作对象
Statement statement = connection.createStatement();
第四步:执行SQL语句
String sql = "select t.id, t.name where t_user";
ResultSet resultSet = statement.executeQuery(sql);
如果是DML语句则返回的是int类型值,代表影响数据库中记录的条数
String sql = "update t_user t set t.name='Tom' where t.id=1";
int i = statement.executeUpdate(sql);
第五步:处理查询结果
while(resultSet.next()){
int id = resultSet.getInt(1);
String name = resultSet.getString(2);
}
第六步:释放资源
ResultSet、Statement、Connection都需要释放(关闭),关闭顺序为创建顺序的倒序。
if(resultSet != null)
resultSet.close();
if(statement != null)
statement.close();
if(connection != null)
connection.close();
完整代码如下:
public class JdbcDemo {
public static void test() {
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try {
//第一步:注册驱动
Driver driver = new com.mysql.jdbc.Driver();
DriverManager.registerDriver(driver);
String user = "root";
String password = "123456";
String url = "jdbc:mysql://localhost:3306/mydatabase";
//第二步:获取数据库连接对象
connection = DriverManager.getConnection(url, user, password);
//第三步:获取数据操作对象
statement = connection.createStatement();
String sql = "select id, name from t_user";
//第四步:执行sql语句
resultSet = statement.executeQuery(sql);
//第五步:处理查询结果
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
System.out.println(id + "--" + name);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
//第六步:释放资源
try {
if (resultSet != null)
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (statement != null)
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (connection != null)
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
现在大都使用各种ORM框架,没有在去直接使用JDBC的了,但是在找工作的时候有的公司笔试时会考这个。。。很让人无语啊。