JBCD技术
定义
官方定义:JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。
可以理解为:JDBC技术就是用来解决java程序与数据库之间的连接问题。
连接步骤
java 连接数据库的步骤 :
1、需要获取数据库厂商提供的驱动文件 (不同的数据库厂商会提供各自的数据库驱动包)
2、数据库是否可以启动
3、把驱动文件导入到项目中
4、加载驱动文件中的类到内存中
5、创建Connection对象(java.sql包中的一个接口),作用:连接数据库,建立管道
需要提供创建连接项的基本信息,如:数据库的ip地址,端口号,库名,用户名,密码
6、创建预编译对象 PreparedStatement 包 ;根据连接项对象进行创建的
7、创建结果集对象 ResultSet 包 ;通过next();命令控制指针指向下一条
8、对数据库中 表中的数据实现 :增删改查 ;
9、数据持久化
将数据库中获取到的数据,存到java的对象中,当多次需要该数据时,不需要重复访问数据库,
只要访问该对象,就可以获取数据;
10、通过配置文件获取连接项 ,实现增删改查
1、什么是配置文件
2、在项目中怎么创建配置文件
3、怎么给配置文件添加数据
4、在java程序中 连接配置文件
5、创建连接项方法
1、获取配置文件里的信息
2、拼接成连接数据库的信息
3、获取驱动类
4、判断数据库类型
5、创建连接项
6、创建关闭方法(提供要关闭对象的形参)
1、通过传递进来的对象,根据判断进行关闭
11、测试 :创建连接项(通过DBUtils.getConnection)
总结
连接步骤:
1、获取并导入数据库连接的驱动文件
2、加载驱动类(Class.forName("包名.类名"))
3、创建connection的对象(驱动类来创建的)
4、创建数据库的操作对象:A) Statement
B) PreparedStatement
C) CallableStatement
Statement优点:可以建库建表,但是不允许使用Statement对表做增删改查
缺点:1、有sql注入问题 2、不能够插入特殊类型的数据3、速度比较慢
数据库中存储二进制文件的格式是:mysql -- longblob
Oracle -- BLOB
大文本 mysql -- longText
Oracle -- CLOB
PreparedStatement优点:1、预编译速度快 2、能够插入特殊类型的数据 3、屏蔽了部分的sql注入问题
CallableStatement 存储过程相当于数据库中的方法,而大多的金融类公司都会把主要的算法和业务逻辑封装到数据库中,安全并且易修改。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 public class DBUtils { 2 3 private static Properties p = new Properties(); 4 static{ 5 try { 6 p.load(DBUtils.class.getResourceAsStream("init.properties")); 7 } catch (IOException e) { 8 System.out.println("获取配置文件失败"); 9 } 10 } 11 public static Connection getConnection(){ 12 Connection conn = null; 13 String ip = p.getProperty("ip").toLowerCase().trim(); 14 String port = p.getProperty("port").toLowerCase().trim(); 15 String dbname = p.getProperty("dbname").toLowerCase().trim(); 16 String dbtype = p.getProperty("dbtype").toLowerCase().trim(); 17 String username = p.getProperty("username").toLowerCase().trim(); 18 String password = p.getProperty("password").toLowerCase().trim(); 19 if(dbtype.equals("oracle")){ 20 try { 21 Class.forName("oracle.jdbc.driver.OracleDriver"); 22 } catch (ClassNotFoundException e) { 23 System.out.println("加载驱动包失败"); 24 } 25 String str = "jdbc:oracle:thin:@"+ip+":"+port+":"+dbname; 26 try { 27 conn = DriverManager.getConnection(str,username,password); 28 } catch (SQLException e) { 29 System.out.println("连接数据库失败"); 30 } 31 } 32 return conn; 33 } 34 public static void close(Connection conn,PreparedStatement pst,ResultSet rs){ 35 if(conn != null){ 36 try { 37 conn.close(); 38 } catch (SQLException e) { 39 e.printStackTrace(); 40 } 41 } 42 if(pst != null){ 43 try { 44 pst.close(); 45 } catch (SQLException e) { 46 e.printStackTrace(); 47 } 48 } 49 if(rs != null){ 50 try { 51 rs.close(); 52 } catch (SQLException e) { 53 e.printStackTrace(); 54 } 55 } 56 } 57 }