1、概述
JDBC(Java DataBase Connectivity)就是Java数据库连接,说白了就是用Java语言来操作数据库。原来我们操作数据库是在控制台使用SQL语句来操作数据库,JDBC是用Java语言向数据库发送SQL语句
2、JDBC原理
sun公司提供访问数据库规范称为JDBC,而生产厂商提供的规范的实现类称为驱动
JDBC是接口,驱动是接口的实现,没有驱动将无法完成数据库的连接,从而不能操作数据库,每个厂商都需要提供自己的驱动,用来连接自己公司的数据库,也就是说驱动一般都是由数据库厂商提供的
3、JDBC核心接口
JDBC中的核心接口主要包括如下
DriverManger:用来注册驱动并获取Connection;
Connection:最为重要的一个方法就是用来获取Statement对象;
Statement:是用来向数据库发送SQL语句的,这样数据库就会执行发送过来的SQL语句
ResultSet:它是一个迭代器,用于检索查询数据
4、JDBC开发步骤
1、注册驱动
2、获取链接
3、获取语句执行者
4、执行sql语句
5、处理结果
实例代码如下
/**
* CREATE TABLE USER(
* USERNAME VARCHAR(30) COMMENT '用户名',
* PASSWORD VARCHAR(10) COMMENT '密码'
* )ENGINE=InnoDB AUTO_INCREMENT=1519 DEFAULT CHARSET=utf8;
*
* INSERT INTO USER VALUES('张三','123456')
*/
public class JDBCTEST {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//1、注册驱动
Class.forName("com.mysql.jdbc.Driver");
//2、获取链接
Connection connection = DriverManager.getConnection("jdbc:mysql://192.168.47.151:3306/web", "root", "root");
//3、获取执行sql语句的对象
Statement statement = connection.createStatement();
//4、执行sql语句
ResultSet resultSet = statement.executeQuery("SELECT * FROM USER ");
//处理执行结果
while (resultSet.next()) {
System.out.println("用户名:" + resultSet.getString(1) + " 密码:" + resultSet.getString("password"));
}
resultSet.close();
statement.close();
connection.close();
}
}
5、Connection
Connection connection = DriverManager.getConnection(String url,String user, String password);
Connection对象常用的方法
createStatement():创建向数据库发送sql的Statement对象
prepareStatement(sql):创建向数据库发送预编译sql的PrepareSatement对象
execute(String sql):用于向数据库发送任意sql语句
addBatch(String sql):把多条sql语句放到一个批处理中。
executeBatch():向数据库发送一批sql语句执行。
6、执行sql语句
Statement statement = connection.createStatement();
Statement 常用方法如下
executeQuery(String sql) :用于向数据发送查询语句。
executeUpdate(String sql):用于向数据库发送insert、update或delete语句
execute(String sql):用于向数据库发送任意sql语句
addBatch(String sql):把多条sql语句放到一个批处理中。
executeBatch():向数据库发送一批sql语句执行。
6、防止sql注入代码
/**
* CREATE TABLE USER(
* USERNAME VARCHAR(30) COMMENT '用户名',
* PASSWORD VARCHAR(10) COMMENT '密码'
* )ENGINE=InnoDB AUTO_INCREMENT=1519 DEFAULT CHARSET=utf8;
*
* INSERT INTO USER VALUES('张三','123456')
*/
public class JDBCTEST {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//1、注册驱动
Class.forName("com.mysql.jdbc.Driver");
//2、获取链接
Connection connection = DriverManager.getConnection("jdbc:mysql://192.168.47.151:3306/web", "root", "root");
// //3、获取执行sql语句的对象
// Statement statement = connection.createStatement();
// //4、执行sql语句
// ResultSet resultSet = statement.executeQuery("SELECT * FROM USER ");
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM USER WHERE username=? AND password=?");
preparedStatement.setString(1,"张三");
preparedStatement.setString(2,"123456");
ResultSet resultSet = preparedStatement.executeQuery();
//处理执行结果
while (resultSet.next()) {
System.out.println("用户名:" + resultSet.getString(1) + " 密码:" + resultSet.getString("password"));
}
resultSet.close();
//statement.close();
resultSet.close();
connection.close();
}
}