数据库持久化+JDBC数据库连接

数据持久化数据持久化就是 将内存中的数据模型转换为存储模型 ,以及 将存储模型转换为内存中的数据模型 的统称 。数据模型可以是任何数据结构或对象模型,存储模型可以是关系模型、XML、二进制流等 。
瞬时状态保存在内存的程序数据,程序退出,数据就消失了
持久状态保存在磁盘上的程序数据,程序退出后依然存在
数据持久化技术Hibernate、JPA、==JDBC(JAVA Datebase Connectivity)==等
JDBC框架Driver 接口java.sql.Driver接口是所有 JDBC 驱动程序需要实现的接口 。这个接口是提供给数据库厂商使用的,不同数据库厂商提供不同的实现
在程序中不需要直接去访问实现了 Driver 接口的类,而是由**驱动程序管理器类(java.sql.DriverManager)**去调用这些Driver实现
连接、操作数据库步骤Connection conn = null; Statement st=null; ResultSet rs = null; try { //获得Connection //创建Statement //处理查询结果ResultSet }catch(Exception e){e.printStackTrance(); } finally {//释放资源ResultSet, Statement,Connection }一、获取数据库连接对象步骤1、导入jar包1、在项目中创建lib文件夹
2、将jar文件放置到lib文件夹
3、集成到项目中,右键build(eclipse)、add as library(idea)
2、注册驱动(Java代码中加载驱动类)将com.MySQL.jdbc包下的Driver类的字节码文件从本地磁盘加载到方法区中
==Oracle的驱动==:
oracle.jdbc.driver.OracleDriver
==mySql的驱动==: com.mysql.jdbc.Driver
方式一:加载 JDBC 驱动需调用 Class 类的静态方法 forName(),向其传递要加载的 JDBC 驱动的类名
//将com.mysql.jdbc包下的Driver类的字节码文件从本地磁盘加载到方法区中Class.forname("com.mysql.jdbc.Driver")方式二:DriverManager 类是驱动程序管理器类,负责管理驱动程序
DriverManager.registerDriver(com.mysql.jdbc.Driver);通常不用显式调用 DriverManager 类的 registerDriver() 方法来注册驱动程序类的实例,原因:
1、该方法,过于依赖jar包的存在
2、该方法,会造成二次注册
3、使用Class.forname可以降低耦合性
3、获取连接对象//本机IP:localhost 本机端口号:3306String url = "jdbc:mysql://IP地址:端口号/库名?serverTimezone=Asia/Shanghai&characterEncoding=utf-8";String user = "用户名";String password = "密码";Connection conn = DriverManager.getConnection(url,user,passWord);协议:JDBC URL中的协议总是jdbc
子协议:子协议用于标识一个数据库驱动程序
子名称:一种标识数据库的方法 。子名称可以依不同的子协议而变化,用子名称的目的是为 了定位数据库提供足够的信息 。包含 主机名(对应服务端的ip地址),端口号,数据库名
几种常用数据库的JDBC URL对于 Oracle 数据库连接,采用如下形式:
jdbc:oracle:thin:@localhost:1521:库名对于 SQLServer 数据库连接,采用如下形式:
jdbc:microsoft:sqlserver//localhost:1433; DatabaseName=库名对于 MYSQL 数据库连接,采用如下形式:
jdbc:mysql://localhost:3306/库名二、执行sql语句1、获取Statement对象Statement statement = conn.createStatement();2、执行sql语句int result = statement.executeUpdate("sql语句字符串对象")Statement类方法分类

  • int executeUpdate(sql);
    • 针对数据库的增(insert into)、删(delete from)、改(update set)操作
    • 返回值类型:实际影响的行数
  • ResultSet executeQuery(sql);
    • 针对数据库的查询(select from)操作
    • 返回值类型:一个结果集类型
  • boolean execute(sql);
    • 针对数据库的增删改查操作,一般我们不会使用,jdbc的底层代码会使用
    • 如果执行的sql语句是增删改,返回false
    • 如果执行的sql语句是查询,返回true
3、处理执行结果(ResultSet)//使用Statement类的方法ResultSet executeQuery(String sql);获得结果集类型的对象ResultSet set = statement.executeQuery(sql);while(set.next()){//形参可以直接写字段名,字段名不区分大小写String id = set.getInt("book_id");//也可以写字段索引,索引从1开始String id = set.getInt(1);}4、释放资源resultSet.close();statement.close();connection.close();实现JDBC工具类将获取连接和关闭资源等公共、重复的代码封装成一个工具类


推荐阅读