JDBC连接数据库(一)

使用JDBC连接数据库

(一)JDBC简介

(1)什么是JDBC

JDBC: Java Data Base Connectivity (Java数据库连接),JDBC是由Java语言编写的相关类和接口组成。它可以为多种数据库提供统一的访问,并支持SQL语句。还可以利用Java代码连接多种数据库(Oracle,SQL Server,MySql),从而实现操作数据库的目的。

(2)JDBC操作

操作主要分为三大步骤:①注册驱动连接数据库,②建立操作指令操作数据库 ③关闭并释放操作指令对象

(3)JDBC常用类和接口

①连接数据库接口Connection

②驱动程序管理类DriverManager 

操作指令接口Statement;Preparedstatement;CallableStatement 

④结果集合接口ResultSet

(二)JDBC编程

JDBC编程步骤

①导入相关数据库驱动包mysql-connector-java-5.1.5-bin.jar

②加载驱动程序Class.forName(driver).newInstance() 

③获取数据库连接connection = DriverManager.getConnection(url, user, password); 

④创建操作指令对象statement = connection.createStatement(); 

⑤向数据库发送操作指令 例如:resultSet = statement.executeQuery("select* from 表名") 

⑥处理数据库的返回结果 例如:resultSet.next();resultSet.getString("")

⑦逆置关闭并释放相关类和接口 例如:closeResultSet;closeStatement;closeConnection。

JDBC编程相关方法

数据库连接接口Connection

(1)createStatement()方法:创建一个 Statement 对象来将 SQL 语句发送到数据库

(2)prepareStatement()方法:  创建一个 PreparedStatement 对象来将参数化的 SQL 语句发送到数据库

(3)prepareCall()方法: 创建一个 CallableStatement 对象来调用数据库存储过程

(4)setAutoCommit()方法:将此连接的自动提交模式设置为给定状态

(5)commit()方法:使所有上一次提交/回滚后进行的更改成为持久更改,并释放此 Connection 对象当前持有的所有数据库锁

(6)rollback()方法: 取消在当前事务中进行的所有更改,并释放此 Connection 对象当前持有的所有数据库锁

(7)close()方法:立即释放此 Connection 对象的数据库和 JDBC 资源,而不是等待它们被自动释放

操作指令接口:Statement

(1)execute(String sql)方法: 执行给定的 SQL 语句,该语句可能返回多个结果

(2)executeQuery(String sql)方法:执行给定的 SQL 语句,该语句返回单个 ResultSet 对象

(3)executeUpdata()方法:运行更新操作,返回更新的行数

(4)close()方法:立即释放此 Statement 对象的数据库和 JDBC 资源,而不是等待该对象自动关闭时发生此操作

结果集合接口ResultSet

(1)next()方法:将光标从当前位置向前移一行

(2)frist()方法: 将光标移动到此 ResultSet 对象的第一行

(3)last()方法:将光标移动到此 ResultSet 对象的最后一行

(4)getXXX()方法:以 Java 编程语言中 XXX 的形式获取此 ResultSet 对象的当前行中指定列的值

(5)close()方法:立即释放此 ResultSet 对象的数据库和 JDBC 资源,而不是等待该对象自动关闭时发生此操作

④特殊操作指令接口:Preparedstatement;CallableStatement

(1)setXXX(int parameterIndex, XXX x)方法:将指定参数设置为给定 JavaXXX值

(2)getXXX(XXX parameterName)方法: 以 Java 编程语言中 XXX 值的形式获取 JDBC XXX 参数的值

(3)execute()方法:在此PreparedStatement/CallableStatement对象中执行 SQL 语句,该语句可以是任何种类的 SQL 语句

(4)executeQuery()方法 在此 PreparedStatement/CallableStatement对象中执行 SQL 查询,并返回该查询生成的 ResultSet 对象

(5)executeUpdata()方法 在此 PreparedStatement/CallableStatement运行更新操作,返回更新的行数

⑤驱动程序管理类DriverManager

 (1)getConnection(String url) 试图建立到给定数据库 URL 的连接

 (2)getConnection(String url,Sting user,String password)试图建立到给定数据库 URL 的连接

JDBC连接数据库优化

①封装数据库代码

②优化编译预处理

③优化存储过程

④优化事务处理机制(注入攻击和取消在当前事务中进行的所有更改

(三)代码演示

 ①封装数据库代码

 1 import java.sql.Connection;
 2 import java.sql.DriverManager;
 3 import java.sql.ResultSet;
 4 import java.sql.Statement;
 5 /*
 6    * 封装数据库相关操作
 7  * 
 8  */
 9 public class JdbcTool {
10     // (1)注册驱动变量
11     static String driver = "com.mysql.jdbc.Driver";
12     // (2)统一资源定位符
13     static String url = "jdbc:mysql://localhost/t_user?useUnicode=true&characterEncoding=utf-8";
14     // (3)用户名
15     static String user = "root";
16     // (4)密码
17     static String password = "yao13539753785";
18 
19     // (5)与数据库建立连接
20     public static Connection getConnection() {
21         Connection connection = null;
22         // 注册驱动
23         try {
24             Class.forName(driver).newInstance();
25             connection = DriverManager.getConnection(url, user, password);
26             System.out.println("连接成功...");
27         } catch (Exception e) {
28             System.out.println("连接失败...");
29         }
30         return connection;
31     }
32 
33     // (6)关闭并释放
34     public static void closeResultSet(ResultSet resultSet) {
35         try {
36             if (resultSet != null) {
37                 resultSet.close();
38                 resultSet = null;
39                 System.out.println("关闭ResultSet成功...");
40             }
41         } catch (Exception e) {
42             System.out.println("关闭ResultSet失败...");
43         }
44     }
45 
46     public static void closeStatement(Statement statement) {
47         try {
48             if (statement != null)
49                 statement.close();
50             statement = null;
51             System.out.println("关闭Statement成功...");
52         } catch (Exception e) {
53             System.out.println("关闭Statement失败...");
54         }
55     }
56 
57     public static void closeConnection(Connection connection) {
58         try {
59             if (connection != null) {
60                 connection.close();
61                 connection = null;
62                 System.out.println("关闭Connection成功...");
63             }
64         } catch (Exception e) {
65             System.out.println("关闭Connection失败...");
66         }
67 
68     }

②查询数据库

 1 import java.sql.Connection;
 2 import java.sql.ResultSet;
 3 import java.sql.Statement;
 4 import com.thxy.jdbcTool.*;
 5 /*
 6  * 操作指令接口Statement相关操作
 7  */
 8 public class StatementWays {
 9     // 操作数据库
10     Connection connection = null;
11     Statement statement = null;
12     ResultSet resultSet = null;
13     // (1)查询数据库(正常查询)
14     public void select() {
15         try {
16             connection = JdbcTool.getConnection();
17             statement = connection.createStatement();
18             resultSet = statement.executeQuery("select* from t_form");
19             while (resultSet.next()) {
20                 String name = resultSet.getString("name");
21                 String password1 = resultSet.getString("password");
22                 String phone = resultSet.getString("phone");
23                 System.out.println("姓名" + name + "\n" + "密码" + password1 + "\n" + "电话" + phone);
24             }
25             System.out.println("查询成功....");
26         } catch (Exception e) {
27             System.out.println("查询失败....");
28         } finally {
29             JdbcTool.closeResultSet(resultSet);
30             JdbcTool.closeStatement(statement);
31             JdbcTool.closeConnection(connection);
32         }
33 
34     }

③增添数据库信息

 1 import java.sql.Connection;
 2 import java.sql.ResultSet;
 3 import java.sql.Statement;
 4 import com.thxy.jdbcTool.*;
 5 /*
 6  * 操作指令接口Statement相关操作
 7  */
 8 // (2)向数据库增添信息
 9     public void insert(String name, String password, String phone) {
10         try {
11             connection = JdbcTool.getConnection();
12             statement = connection.createStatement();
13             int i = statement.executeUpdate("insert into t_form(name,password,phone) values(" + "'" + name + "'" + ","
14                     + "'" + password + "'," + "'" + phone + "'" + ")");
15             System.out.println("增加" + i + "条记录");
16         } catch (Exception e) {
17             System.out.println("增加信息失败...");
18         } finally {
19             JdbcTool.closeStatement(statement);
20             JdbcTool.closeConnection(connection);
21         }
22     }

③删除数据库信息

 

 1 import java.sql.Connection;
 2 import java.sql.ResultSet;
 3 import com.thxy.jdbcTool.*;
 4 /*
 5  * 操作指令接口Statement相关操作
 6  */
 7     // (3) 删除数据库的信息
 8     public void delete(String name) {
 9         try {
10             connection = JdbcTool.getConnection();
11             statement = connection.createStatement();
12             int i = statement.executeUpdate("delete  from t_form where name='" + name + "'");
13             System.out.println("删除" + i + "条记录...");
14         } catch (Exception e) {
15             System.out.println("删除失败");
16         } finally {
17             JdbcTool.closeStatement(statement);
18             JdbcTool.closeConnection(connection);
19         }
20     }

④更改数据库信息

 1 import java.sql.Connection;
 2 import java.sql.ResultSet;
 3 import com.thxy.jdbcTool.*;
 4 /*
 5  * 操作指令接口Statement相关操作
 6  */
 7     public void update(String name, String password) {
 8         try {
 9             connection = JdbcTool.getConnection();
10             statement = connection.createStatement();
11             int i = statement
12                     .executeUpdate("update t_form set password='" + password + "'" + " where name='" + name + "'");
13             System.out.println("更新" + i + "条记录...");
14         } catch (Exception e) {
15             System.out.println("更新失败");
16         } finally {
17             JdbcTool.closeStatement(statement);
18             JdbcTool.closeConnection(connection);
19         }
20     }

⑤注入攻击

 1 import java.sql.Connection;
 2 import java.sql.ResultSet;
 3 import java.sql.Statement;
 4 import com.thxy.jdbcTool.*;
 5 /*
 6  * 操作指令接口Statement相关操作
 7  */
 8     // (5)注入攻击
 9     public void noSelect(String name) {
10         try {
11             connection = JdbcTool.getConnection();
12             statement = connection.createStatement();
13             resultSet = statement.executeQuery("select* from t_form where name='" + name + "'");
14             while(resultSet.next())
15             {
16                 System.out.println("注入攻击成功...");
17                 name=resultSet.getString("name");
18                 String password=resultSet.getString("password");
19                 String phone=resultSet.getString("phone");
20                 System.out.println("姓名"+name+"\n"+"密码"+password+"\n"+"手机"+phone);
21             }
22         } catch (Exception e) {
23             System.out.println("注入攻击失败..."); 
24         }finally {
25             JdbcTool.closeResultSet(resultSet);
26             JdbcTool.closeStatement(statement);
27             JdbcTool.closeConnection(connection);
28         }
29     }

 

猜你喜欢

转载自www.cnblogs.com/KYAOYYW/p/9950009.html