zoukankan      html  css  js  c++  java
  • [Java] 数据库编程JDBC

    背景

    • 持久化:把Java对象保存在硬盘中
      • 序列化:将对象转换为二进制对象,再保存
      • 保存在关系型数据库中
    • Object-Relational Mapping(对象-关系映射框架,或ORM框架):把对象属性变成数据库的行-列,进而存储在数据库中
    • Java Database Connective JDBC(Java数据库连接技术):Java提供的一组与平台无关的数据库操作标准,用于Java与关系型数据库的连接
    • O/R Mapping中间件
      • EJB:对JDBC的重量级封装,用面向对象的风格实现数据的创建、读取、查询等操作
      • Hibernate:对JDBC的轻量级封装,把Java属性用声明的方式映射到数据库表,采用反射机制实现了持久化
      • Spring:基于IOC和AOP的结构J2EE系统的框架 
      • MyBatis:一种半自动的ORM框架,前身是iBatis

    操作形式

    • JDBC本地驱动:由不同的数据库生产商根据JDBC定义的操作标准实现驱动程序,程序可直接通过JDBC进行数据库的连接操作,性能较高,但需对不同数据库编写相应驱动
    • JDBC网络驱动:利用特定的数据库连接协议进行数据库的网络连接,可连接任何一个指定服务器的数据库,实际开发使用最多

     

    连接步骤

    • 向容器中加载数据库驱动程序
    • 通过DriverManager类根据指定数据库连接信息取得数据库连接
    • 利用Statement、PreparedStatement、ResultSet实现数据库CRUD操作
    • 释放占用的资源

    连接数据库

     1 import java.sql.Connection;
     2 import java.sql.DriverManager;
     3 import java.sql.SQLException;
     4 
     5 public class TestDemo {
     6     public static void main(String[] args) {
     7         try {
     8             Class.forName("com.mysql.jdbc.Driver");
     9             Connection c = DriverManager.getConnection(
    10 "jdbc:mysql://127.0.0.1:3306/mysql?serverTimezone=GMT%2B8&characterEncoding=UTF-8&useSSL=false",
    11                             "root", "Chen1227+");
    12             System.out.println("数据库连接成功!" + c);
    13         } catch (ClassNotFoundException e) {
    14             e.printStackTrace();
    15         }catch(SQLException e) {
    16             e.printStackTrace();
    17         }
    18     }
    19 }
    View Code

    查询数据

     1 import java.sql.Connection;
     2 import java.sql.DriverManager;
     3 import java.sql.ResultSet;
     4 import java.sql.SQLException;
     5 import java.sql.Statement;
     6 
     7 public class TestDemo {
     8     public static void main(String[] args) {
     9         try {
    10             // 加载数据库驱动
    11             Class.forName("com.mysql.jdbc.Driver");
    12             
    13             // 连接数据库
    14             Connection c = DriverManager.getConnection(
    15 "jdbc:mysql://127.0.0.1:3306/mysql?serverTimezone=GMT%2B8&characterEncoding=UTF-8&useSSL=false",
    16                             "root", "Chen1227+");
    17             System.out.println("数据库连接成功!" + c);
    18             
    19             // 建立连接
    20             Statement s = c.createStatement();
    21             System.out.println("获取 Statement对象: " + s);
    22             
    23             // 执行SQL语句
    24             String sql = "SELECT order_num, cust_id FROM Orders";
    25             ResultSet re = s.executeQuery(sql);
    26             while(re.next()) {
    27                 int order = re.getInt("order_num");
    28                 int cust = re.getInt("cust_id");
    29                 System.out.println(order + "," + cust);
    30             }
    31             System.out.println("执行语句成功!");
    32             
    33             // 关闭资源
    34             re.close();
    35             s.close();
    36             c.close();
    37             System.out.println("资源关闭成功!");
    38             
    39         } catch (ClassNotFoundException e) {
    40             e.printStackTrace();
    41         }catch(SQLException e) {
    42             e.printStackTrace();
    43         }
    44     }
    45 }
    View Code

  • 相关阅读:
    npx vs npm
    RubyGem镜像/ruby国内镜像
    IOS开发依赖管理工具CocoaPods
    alpine linux
    阿里妈妈图标库
    java应用系统运行速度慢的解决方法
    jvm程序执行慢诊断手册
    js强制不使用“兼容性视图”
    java.lang.NumberFormatException: Infinite or NaN
    ALTER添加列后,立即UPDATE该列会报错
  • 原文地址:https://www.cnblogs.com/cxc1357/p/12470378.html
Copyright © 2011-2022 走看看