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对象,以提高效率,如:批处理。

  • 相关阅读:
    C#与数据库访问技术总结(十一)之数据阅读器(DataReader)1
    C#与数据库访问技术总结(十)之添加&删除
    C#与数据库访问技术总结(九)之实例
    C#与数据库访问技术总结(八)之ExecuteNonQuery方法
    C#与数据库访问技术总结(六)之Command对象创建SQl语句代码示例
    C#与数据库访问技术总结(七)综合示例
    C#与数据库访问技术总结(五)之Command对象的常用方法
    OS——进程简答题(1)
    LAMP/LNMP 一键安装脚本
    运维如何延续自己的职业生涯--萧田国2017年GOPS深圳站演讲内容
  • 原文地址:https://www.cnblogs.com/xslzwm/p/9674510.html
Copyright © 2011-2022 走看看