zoukankan      html  css  js  c++  java
  • 程序员与数据库打交道的JDBC知识概要

    1.JDBC全称:Java database connectivity,Java数据库连接。

    (1)           JDBC是一种用于执行SQL语句的Java API,为多种关系数据库提供多种统一访问,由一组Java语言编写的类和接口组成。

    (2)           程序员JDBC API程序可以访问所有的数据库。

    (3)           Java语言和JDBC结合,程序员不必为不同的平台写不同的应用程序,只需写一遍程序就可以使它在任意平台上运行。

    (4)           JDBC简单讲做三件事:与数据库建立连接,发送、处理数据库语句并处理结果。

    3.加载Oracle的JDBC驱动程序

    Class.forName(“Oracle.jdbc.driver.OracleDriver”)

    4.execute、executeQuery、executeUpdate

     executeQuery:返回结果集(ResultSet),通常用于select语句。

    executeUpdate:返回此操作影响的行数(int),通常用于insert,update,delete语句。

    execute返回Boolean值, 通常用于insert,update,delete语句。

    5.ResultSet处理的典型代码:

    while(rs.next()){

       String ename = rs.getString(1);

       int empno = rs.getInt(“empno”);

    }

    6.JDBC记载4大步骤

    (1)加载一个Driver驱动;

    (2)创建数据库连接(Connection)

    (3)创建SQL命令发布器Statement,通过statement发送命令并得到结果。

    (4)处理结果(select语句和resultset),处理完毕后关闭数据库资源。

    7.SQL注入攻击

    比如JDBC完成用户的登录功能

    (1)           SQL语句采用了字符串拼接技术String sql = “select * from t_user where userno= ‘”+userno+”’ and password =+upwd+”’”;

    (2)           继而使用SQL命令发布器发送SQL命令并得到结果:

    Stmt.executeQuery(sql);

    (3)           如输入:userno = “ abc:,password =” abc ‘or’ 1’ = 1”;

    于是上述SQL字符串就变为sql = “select * from t_user where userno =’ abc’ and password =’ abc’ ‘or’ 1’ = ‘ 1”;

    此语句的用户名和密码并不正确,但是仍然能访问数据表,所以存在风险,这就是所谓的SQL注入攻击。

    (4)           解决方案:采用statement的子接口PreparedStatement来实现。

    *1.可读性强不繁琐

    *2.安全

    *3多次执行同一条SQL语句,效率高

    例:

      Connection conn = null;

      Statement stmt = null;

      ResultSet rs = null;

    try{

       Class.forName(“oracle.jdbc.driver.OracleDriver”);

       conn = DriverManager.getConnection(“jdbc:oracle:thin:@localhost:1521:orcl”,”scott”,”tiger”);

       stmt = conn.createStatement();

     String sql = “select * from emp”;

    rs = stmt.executeQuery(sql);

  • 相关阅读:
    最近工作状态异常的原因追寻。
    当“逻辑”与“UE”冲突时
    面对一个“丢失了与用户“签订”的协议的修改”时进行的思考。
    如果公司的需求总是让研发部门有怨言…
    安装sybase12.0,运行时报错异常。
    你看到这份文档,我就想摔鼠标!
    对于研发组长的责任产生了疑惑。
    关于html中空格导致的排版问题
    如何配置你的工作环境。
    今天的笔记:2014年6月3日
  • 原文地址:https://www.cnblogs.com/7758521gorden/p/8051570.html
Copyright © 2011-2022 走看看