zoukankan      html  css  js  c++  java
  • JDBC

    1. jdbc

      java api,由一套接口组成,提供了关系型数据库统一访问。

      java.sql,javax.sql包

    2. 开发步骤

    1) DriverManager注册驱动

    2) 建立连接(jdbc)

    3) 发送sql给服务器

    4) 接收响应并处理

    5) 释放资源

    3. 入门案例

    //1.注册驱动,DriverManager管理具体的驱动程序,实现对底层屏蔽,对开发人员提供统一访问。

    //java.sql.Driver: jdbc的接口

    //com.mysql.jdbc.Driver: mysqljdbcDriver接口实现类

    DriverManager.registerDriver(new Driver());

    //2.建立连接  java.sql.Connection

    conn = DriverManager.getConnection(

    "jdbc:mysql://localhost:3306/bd1807?useSSL=true",

    "root",

    "root");

    //3.发送sql给数据库服务

    String sql = "select * from userinfo";

    //Statement对象:实现sql发送

    stmt = conn.createStatement();

    rs = stmt.executeQuery(sql);

    //4.处理响应结果(ResultSet底层维护了一个指向结果集的游标)

    while(rs.next()){  //向前移动游标(遍历一行)

    //获取游标指向行的字段的信息(遍历每列)

    int uid = rs.getInt("uid");

    String uname = rs.getString("uname");

    String password = rs.getString("password");

    System.out.printf("uid:%s,uname:%s,password:%s ",uid,uname,password);

    }

    4. 常见API详解

    1) DriverManager(java.sql,)

    提供驱动的基础服务,对驱动实现细节进行屏蔽;

    注册加载驱动;用于获取连接。

    DriverManager.registerDriver(new Driver());

    Class.forName("com.mysql.jdbc.Driver");

    //建议使用第二种

    conn = DriverManager.getConnection(

    "jdbc:mysql://localhost:3306/bd1807?useSSL=true",

    "root",

    "root");

    6) Connection(java.sql 接口)

    代表客户端程序与数据库服务的连接,与数据的交互都需要依赖于此连接。

    CreateStatement:创建发送sql的statement对象

    prepareStatement():创建预编译sql的preparedStatement对象

    setAutocommit():设置事务自动提交

    commit():手动提交事务

    rollback():手动回滚事务

    //获取连接的元数据信息

    DatabaseMetaData md = conn.getMetaData();

    System.out.println(md.getDatabaseProductName())

    System.out.println(md.getDriverName());

    System.out.println(md.getURL());

    System.out.println(md.getUserName());

    7) Statement以及子接口(java.sql 接口)

    发送sql命令

    executeQuery():用于发送查询的sql语句

    executeUpdate():用于发送增删改的sql语句

    execute():用于发送任意的sql语句

    addBatch():把多条sql语句添加到批处理命令中

    execteBatch():用于执行批处理命令

    8) ResultSet(接口)

    代表返回结果的结果集。底层维护游标,next()移动游标获取每一行数据。

    Next():游标向前

    getString()/getInt()/getObject():获取某行中某个字段值

    //获取结果集的元数据

    ResultSetMetaData md = rs.getMetaData();

    //获取列

    int count = md.getColumnCount();

    //String name = md.getColumnName(column);

    //遍历获取每一个字段的名称

    //类属性和表字段保持一致

    //用于封装对象

    5. 增删改查

    1) statement存在sql注入风险(sql采用字符串拼接方式)

    9) PreparedStatement

    Statement接口的子接口。

    Connection conn = null;

    PreparedStatement ps = null;

    ResultSet rs = null;

    try {

    Class.forName("com.mysql.jdbc.Driver");

    conn = DriverManager.getConnection(

    "jdbc:mysql:///bd1807",

    "root",

    "root");

    //3.创建PreparedSatement发送sql

    String sql = "select * from userinfo where uname = ? and password = ?";

    //预编译(语法语义检查)

    ps = conn.prepareStatement(sql);

    //赋值

    ps.setString(1, uname);

    ps.setString(2, password);

    rs = ps.executeQuery();

    //4.处理结果

    if(rs.next()){

    System.out.println("登陆成功");

    }else{

    System.out.println("登录失败");

    }

    } catch (ClassNotFoundException e) {

    e.printStackTrace();

    } catch (SQLException e) {

    e.printStackTrace();

    }finally{

    try {

    if(rs != null){

    rs.close();

    }

    if(ps != null){

    ps.close();

    }

    if(conn != null){

    conn.close();

    }

    } catch (SQLException e) {

    e.printStackTrace();

    }

    }

    6. dao开发

    dao:data access object

      javaee分层开发中主要负责对数据库表操作的内容。

      由接口和具体实现类组成。

      接口声明规范;实现类可以有多个,对规范方法进行实现。

    7. 外部配置文件

  • 相关阅读:
    Codeforces Round #270 solution
    Codeforces Round #269 (Div. 2) solution
    Codeforces Round #268 (Div. 1) solution(upd div 1 C,div 2 A, B
    Codeforces Round #267 (Div. 2) solution
    Unity 绘制多边形
    DOTween 模仿NGUI Tween
    图像混合模式 正片叠底、滤色、叠加
    一只羊的四个月可以生一只小羊,小羊四个月后又可以生一只小羊 问50个月后有多少只羊(羊不会死)
    Unity CCTween UGUI 动画插件
    Unity UGUI 使用 CCTween 实现 打字效果
  • 原文地址:https://www.cnblogs.com/fax1996/p/9556232.html
Copyright © 2011-2022 走看看