JDBC(Java DataBase Connectivity)指的是Java数据库连接
JDBC优点:直接底层操作,提供了很简单、便捷的访问数据库的方法,跨平台性比较强。灵活性比较强,可以写很复杂的SQL语句
JDBC缺点: 如果遇到批量操作,频繁与数据库进行交互,容易造成效率的下降, 操作比较繁琐,很多代码需要重复写很多次。
主要流程:
1.加载驱动
2.建立连接
3.创建对象statement
4.执行sql语句
5.处理结果集 , 按照列名获取和int都可以
int getInt(int columnIndex) throws SQLException;
int getInt(String columnLabel) throws SQLException;
6.释放资源
public class JDBC {
public static void main(String[] args) {
//1.加载程序
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
//2.获取连接
//第一种 :DriverManager
//url规范 jdbc:<数据库的名字>://host:port/<database name>
//第二种 ;DataSource数据源
String url = "jdbc:mysql://127.0.0.1:3306/java7";
//都是接口
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try {
connection = DriverManager.getConnection(url, "root", "199938");
//1 PreparedStatement 执行命令
// String sql = "select *from table where qq_mail" + "like ? and class_id= ? ";
// preparedStatement = connection.prepareStatement(sql);
// preparedStatement.setInt(1, 3);//第一个参数值
// preparedStatement.setString(2, "%孙");//第二个参数值
// resultSet = preparedStatement.executeQuery();
//3.创建命令
statement = connection.createStatement();
//4.准备SQL语句,执行
String sql = "select id,name,balance from account";
resultSet = statement.executeQuery(sql);
//5.返回结果,处理结果
while (resultSet.next()) {
//一般不用下标 ,用列名
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
int balance = resultSet.getInt("balance");
System.out.println(String.format("id:%d name:%s balance:%s", id, name, balance));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
//6.关闭资源
//谁先创建谁后关闭,先关结果,命令,连接
if (resultSet != null) {
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (statement != null) {
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
JDBC常用接口和类
1. 数据库连接
(1)DriverManager静态方法获取
(2)DataSource数据源对象获取,非物理性关闭,实际对Connection对象进行初始化重置
2. Statement对象
主要是将SQL语句发送到数据库中,有三种Statement对象,
(1)Statement:用于执行不带参数的简单SQL语句
(2)PreparedStatement:用于执行带或不带参数的SQL语句查询;SQL语句会预编译在数据库系统;执行速度快于Statement对象,安全性能好;编译一次,而Statement编译俩次,占位符?不能使用多值,下标从1开始;阻止常见SQL注入攻击;最常用。
(3)CallableStatement对象:用于执行数据库存储过程的调用
3. 执行SQL的方法
(1)executeQuery() 方法执行后返回单个结果集的,通常用于select语句
(2)executeUpdate()方法返回值是一个整数,指示受影响的行数,通常用于update、insert、delete语句
4. ResultSet对象