zoukankan      html  css  js  c++  java
  • JDBC-mysql

    JDBC(Java DataBase Connectivity)

    称为:java访问数据库的解决方案,希望以相同的方式访问不同的数据库

    目的:以实现与具体数据库无关的java操作。JDBC定义了一整套的标准接口,即访问数据库通用的API,不同的数据库厂商根据各自数据库特点去实现这些接口,从而得到java程序的访问。

    1、JDBC接口

        1)驱动管理(用来获取连接)

    DriverManager

        2)连接接口

    Connection

        3)语句对象(对应执行的操作)

    Statement

    PreparedStatement

        4)结果集接口

    ResultSet

    2、JDBC工作流程

        1)加载驱动,建立连接

        2)创建语句对象

        3)执行sql语句

        4)处理结果集

    第一种:查询(包含结果集,执行第四步)

    第二种:更新(不需要去处理结果集,可省略第四步)

        5)关闭连接

    3、代码说明

    Driver接口及驱动类加载(oracle)

    Class.forName("oracle.jdbc.driver.OracleDriver");

    说明:使用反射机制实例化OracleDriver驱动类(从jdbc2开始就不需要显示调用,调用getConnection()会自动加载合适的驱动。建议直接添加驱动)

    con=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","scott","123456");

    说明:127.0.0.1表示服务器地址(也可以用localhost)

               1521表示oracle端口号

               orcl表示数据库应用名

               Connection只是一个接口,真正的实现是由数据库厂商提供的驱动包完成

    Statement st=con.createStatement(); //创建语句对象
    st.executeQuery(sql);  //返回ResuitSet结果集,用于查询
    st.executeUpdate(sql);  //返回int,用于增加、修改、删除

    说明:ResultSet结果集:执行查询sql语句返回的结果集,查询的结果存放在ResultSet对象的一系列中,最初位置是位于行首

               rs.next()方法用于在行间移动,rs.getXX()方法用来取字段对应的数据

    4、MySQL的Driver接口及驱动类

    Class.forName("com.mysql.jdbc.Driver");
    Connection con=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/student","root","1234");

    5、在src下面创建文件:db.properties(.properties后缀名为这样的文件)将驱动和连接数据库的操作都放在该文件中

    注意:

    a. 更改编码格式为utf-8

    b. 该文件存储方式是以键值对存储的(key-value)

    c. 文件中使用注释是以“#”开头,中文字符存储会乱码,使用英文

    6、语句对象:Statement与PreparedStatement的区别

    Statement:主要用于执行静态的sql语句(表示内容固定不变的sql语句)。Statement每一次执行都要对传入的sql语句进行编译,效率低

    某些情况下,sql语句只是其中的参数不同,其他的字句都是相同的,这种适合用PreparedStatement,PreparedStatement能够预防sql注入攻击问题

    PreparedStatement也是一个接口,继承Statement,sql语句有提前编译(效率高)。常用的方法以被修改,方法不在需要参数。executeQuery()、executeUpdate()

           如:insert into dept_xu values(?,?,?);  //用问号代替参数

    PreparedStatement实例包含事先编译的sql语句,sql语句可以有一个或n个IN参数,IN参数的值在sql语句创建时未被指定,此语句为每个IN参数保留一个问号(问号作为占位符),每一个问号的值必须在执行语句之前,通过这样的setInt或setString方法提供进行赋值

    PreparedStatement对象以被预编译过,其执行速度是快于Statement对象的,建议多次执行的sql语句创建为PreparedStatement对象,以提高效率,如:批处理。

  • 相关阅读:
    POJ 3253 Fence Repair
    POJ 2431 Expedition
    NYOJ 269 VF
    NYOJ 456 邮票分你一半
    划分数问题 DP
    HDU 1253 胜利大逃亡
    NYOJ 294 Bot Trust
    NYOJ 36 最长公共子序列
    HDU 1555 How many days?
    01背包 (大数据)
  • 原文地址:https://www.cnblogs.com/xslzwm/p/9674510.html
Copyright © 2011-2022 走看看