zoukankan      html  css  js  c++  java
  • 我的学习之路_第二十章_JDBC

    JDBC


    使用JDBC技术,通过mysql提供的驱动程序,操作数据库

    ● 1. 注册驱动

    告知jvm 使用的是什么驱动程序(mysql,oracle)

    使用API中的类 DriverManager中的静态方法

    没有返回值 registerDriver (Driver dirver) 向DriverManager注册给定驱动程序.
    方法的参数是一个标准的接口Driver
    接口是实现类有mysql确定提供 : com.jdbc.Driver 是接口的实现类
    在源码中已经注册过了,我们只要通过反射技术获取一次class文件对象,类中静态代码就会执行

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

    ● 2. 获取数据库的连接

    数据库是TCP程序服务器,连接服务器(通过三次握手)

    使用API中的类DriverManager中的静态方法

    返回值:Connection getConnection(String url,String user,String password)
    试图建立给定数据库的URL连接

    方法参数: String url :数据库的地址 : jdbc:mysql://ip地址:端口号/数据库名称
    String user:数据库的用户名
    String password:数据库的密码

    方法的返回值 : 返回的是mysql驱动提供的Connection接口的实现类对象,不需要关注实现类,可以使用Connection接口接收

    ● 3. 获取执行者对象

    执行SQL语句的对象,作用就是执行SQL

    可以使用Connection的方法获取
    返回值 : Statement createStatement() 创建一个Statement对象来将SQL语句发送到数据库

    方法的返回值: 返回的mysql驱动提供的Statement接口的实现类对象,我们不要关注实现类,可以使用Statement接口接收


    ● 4. 执行SQL语句获取结果集

    使用执行者对象执行SQL语句
    获取SQL语句的结果集(增删改:整数,执行有效行数 查询:返回的就是一个结果集)

    使用Statement中的方法

    ◆返回值: int executeUpdate(String sql) 执行给定的SQL语句,该语句可能为插入(insert),修改(update)或者删除(delete)语句

    返回值int : 执行的有效行数

    ◆返回值: ResultSet executeQuery(String sql) 执行给定的SQL语句,该语句返回翻个ResultSet对象

    返回值ResultSet标准接口的实现类对象,实现类对象由mysql驱动提供,可以使用ResultSet接口接收

    ● 5. 处理结果集

    如果是执行的查询语句就会返回一个结果集,需要处理

    ResultSet中有一个方法 返回值:boolean next() 将光标从当前位置向前移一行

    如果新的当前行有效,则返回true,如果不存在下一行,则返回false
    如果有结果集返回true,如果没有结果集返回false
    相当于迭代器中的hasNext方法

    next返回true有结果集 使用 ResultSet中的方法 getxxx(参数); xxx表示有多种类型,int,String,Object

    参数 : int columnIndex : 列所在的索引,从1开始

    String columnLabel : 列名

    例如:System.out.println(rs.getObject("cid")+" "+rs.getObject("cname"));

    ● 6. 释放资源

    释放Connection 和 Statement

    其中:1.2.3.6 是固定的步骤 , 4.5 根据增删改/查询有所不同


    【防止用户使用SQL语句注入攻击】

    执行者对象Statement接口有一个子接口

    java.sql.PreparedStatement extends Statement

    表示预编译的 SQL 语句的对象

    SQL语句被预编译并存储在 PreparedStatement 对象中.然后可以使用此对象多次高效的执行该语句

    实现步骤:

    拼接SQL语句可以使用? 占位符(有参数的地方都使用 ? )

    获取执行者对象 PreparedStatement

    返回值: PreparedStatement PreparedStatement(String sql)

    创建一个PreparedStatement 对象来讲参数化的SQL语句发送到数据库

    传参数: 返回值返回的是PreparedStatement接口的实现类对象,有mysql驱动提供,可以使用接口接收

    使用PreparedStatement中的方法

    返回值: void setObject(int parameterIndex , Object x) 使用给定对象设置指定参数的值

    参数: int parameterIndex : 第几个 ? 占位符, 从1开始

    Object x : 占位符要使用的实际值

    执行SQL语句 : 使用preparedStatement 中的方法

    返回值: int executeUpdate()

    INSERT(插入)、UPDATE(修改) 或 DELETE(删除) 语句;或者是无返回内容的 SQL 语句

    返回值: ResultSet executeQuery()

    在此preparedStatement 对象中执行SQL查询,并返回该查询生成的ResulSet对象

  • 相关阅读:
    cocos2dx 菜鸟实习生学习篇(四) 锚点的理解
    cocos2dx 菜鸟进阶篇(三) scrollView(下)
    2012年终总结!
    cocos2dx 菜鸟进阶篇(二) 重力感应
    cocos2dx 菜鸟进阶篇(三) ScrollView(上)
    cocos2dx 菜鸟进阶篇(一) 在游戏中添加music
    Mobile Web项目中碰到的问题及解决
    struts验证框架的使用
    错误解决办法收集
    JSONP跨域访问实现登录验证
  • 原文地址:https://www.cnblogs.com/jia-/p/7087089.html
Copyright © 2011-2022 走看看