JDBC使用
一、加载数据库驱动
try {
//驱动类com.mysql.jdbc.Driver
//就在 mysql-connector-java-5.0.8-bin.jar中
//如果忘记了第一个步骤的导包,就会抛出ClassNotFoundException
Class.forName("com.mysql.jdbc.Driver");
}catch (ClassNotFoundException e){
e.printStackTrace();
}
二、与数据库建立连接
Connection connection = null;
Statement statement = null;
try {
//驱动类com.mysql.jdbc.Driver
//就在 mysql-connector-java-5.0.8-bin.jar中
//如果忘记了第一个步骤的导包,就会抛出ClassNotFoundException
Class.forName("com.mysql.jdbc.Driver");
//建立与数据库的Connection连接
//数据库所处于的ip:127.0.0.1 (本机)
// 数据库的端口号: 3306 (mysql专用端口号)
// 数据库名称 mysql
// 编码方式 UTF-8
// 账号 root
// 密码 123
connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mysql?characterEncoding=UTF-8",
"root", "123");
}catch (ClassNotFoundException e){
e.printStackTrace();
}catch (SQLException e) {
e.printStackTrace();
}
三、创建Statement对象
Connection connection = null;
Statement statement = null;
try {
//驱动类com.mysql.jdbc.Driver
//就在 mysql-connector-java-5.0.8-bin.jar中
//如果忘记了第一个步骤的导包,就会抛出ClassNotFoundException
Class.forName("com.mysql.jdbc.Driver");
//建立与数据库的Connection连接
//数据库所处于的ip:127.0.0.1 (本机)
// 数据库的端口号: 3306 (mysql专用端口号)
// 数据库名称 mysql
// 编码方式 UTF-8
// 账号 root
// 密码 123
connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mysql?characterEncoding=UTF-8",
"root", "123");
//创建Statement对象
statement = connection.createStatement();
}catch (ClassNotFoundException e){
e.printStackTrace();
}catch (SQLException e) {
e.printStackTrace();
}
四、编写SQL语句使用Statement执行
Connection connection = null;
Statement statement = null;
try {
//驱动类com.mysql.jdbc.Driver
//就在 mysql-connector-java-5.0.8-bin.jar中
//如果忘记了第一个步骤的导包,就会抛出ClassNotFoundException
Class.forName("com.mysql.jdbc.Driver");
//建立与数据库的Connection连接
//数据库所处于的ip:127.0.0.1 (本机)
// 数据库的端口号: 3306 (mysql专用端口号)
// 数据库名称 mysql
// 编码方式 UTF-8
// 账号 root
// 密码 123
connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mysql?characterEncoding=UTF-8",
"root", "123");
//创建Statement对象
statement = connection.createStatement();
//编写SQL语句使用statement 对象执行语句
String sql = "SQL语句";
statement.execute(sql);
}catch (ClassNotFoundException e){
e.printStackTrace();
}catch (SQLException e) {
e.printStackTrace();
}
五、关闭连接(先关闭statement连接再关闭connection连接)
Connection connection = null;
Statement statement = null;
try {
//驱动类com.mysql.jdbc.Driver
//就在 mysql-connector-java-5.0.8-bin.jar中
//如果忘记了第一个步骤的导包,就会抛出ClassNotFoundException
Class.forName("com.mysql.jdbc.Driver");
//建立与数据库的Connection连接
//数据库所处于的ip:127.0.0.1 (本机)
// 数据库的端口号: 3306 (mysql专用端口号)
// 数据库名称 mysql
// 编码方式 UTF-8
// 账号 root
// 密码 123
connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mysql?characterEncoding=UTF-8",
"root", "123");
//创建Statement对象
statement = connection.createStatement();
//编写SQL语句使用statement 对象执行语句
String sql = "SQL语句";
statement.execute(sql);
}catch (ClassNotFoundException e){
e.printStackTrace();
}catch (SQLException e) {
e.printStackTrace();
}finally {
if(statement != null){
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (connection != null){
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
六、PreparedStatement和Statement比较优缺点
- Statement 需要进行字符串拼接,可读性和维护性比较差
- PreparedStatement 使用参数设置,可读性好,不易犯错
- PreparedStatement有预编译机制,性能比Statement更快
- PreparedStatement防止SQL注入式攻击
// Statement需要进行字符串拼接,可读性和维修性比较差
// PreparedStatement 使用参数设置,可读性好,不易犯错
String sql = "insert into entity values(?,?,?,?)";
PreparedStatement ps = c.prepareStatement(sql);
preparedStatement.setString(1,"");
preparedStatement.setString(2,"");
preparedStatement.setString(3,"");
preparedStatement.setString(4,"");
preparedStatement.execute();
七、execute与executeUpdate比较
相同:都可以执行增加,删除,修改
不同1:
execute可以执行查询语句
然后通过getResultSet,把结果集取出来
executeUpdate不能执行查询语句
不同2:
execute返回boolean类型,true表示执行的是查询语句,false表示执行的是insert,delete,update等等
executeUpdate返回的是int,表示有多少条数据受到了影响