jdbc—JDBC常用接口介绍

1.什么是JDBC?

 -1.JDBC(Java Database Connection)为Java开发者使用数据库提供了统一的编程接口,它由一组Java类和接口组成。是Java程序与数据库通信的标准API

JDBC API使得开发人员可以使用纯Java的方式来连接数 据库,并执行操作。

  -2.sun公司由于不知道各个主流商用数据库的程序代码,因此无法自己写代码连接各个数据库,因此,sun公司自己提供了一套API,只要数据库想要和Java连接的,

数据库厂商必须自己实现JDBC这套接口。而数据库厂商的JDBC实现,我们就叫它此数据库的驱动。

2.JDBC访问数据库流程

  1.加载JDBC驱动程序

  2.建立与数据库的连接

  3.发送SQL语句

  4.得到SQL执行结果

3.Java程序和数据库连接的时候,其实就是Socket连接。

4.JDBC常用接口

  Driver接口

    - Driver接口由数据库厂家提供,对于Java开发者而言,只需要使用Driver接口就可以了。

    - 在编程中要连接数据库,必须先装载特定厂商的数据库驱动程序。不同的数据库有不同的装载方法。

    - 驱动:就是各个厂商实现Sun公司提出的JDBC接口。即对Connection等接口的实现类的jar文件。

    - 装载mysql驱动:Class.forName("com.mysql.jdbc.Driver");

    - 装载oracle驱动:Class.forName("com.jdbc.driver.OracleDriver");

  DriverManager接口

    - DriverManager接口是JDBC的管理层,作用于用户和驱动程序之间。

    - DriverManager跟踪可用的驱动程序,并在数据库和相应的驱动之间建立连接。

  Connection接口

    - Connection与特定数据库的连接(会话),在连接上下文中执行SQL语句并返回结果。

    - DriverManager的getConnection()方法建立在JDBC URL中定义的数据库Connection连接上

      -Mysql

        Connection con = DriverManager.getConnection("jdbc:mysql://host:port/database", "user", "password");

      -Oracle

        Connection con = DriverManager.getConnection("jdbc:oracle:[email protected]:port/database", "user", "password");

  Statement接口

    - 用于执行静态SQL语句并返回它所生成结果的对象。

    - 三种Statement类:

      - Statement:

        由createStatement创建,用于发送简单的SQL语句(不带参数)

      - PreparedStatement:

        - 继承自Statement接口,有preparedStatement创建,用于发送含有一个或者多个输入参数的SQL语句。PreparedStatement对象

         比Statement对象效率更高,并且是防止SQL注入。我们一般都使用PreparedStatement。

      - CallableStatement:

        - 继承自preparedStatement。由方法prePareCall创建,用于调用存储过程。

    - 常用的Statement方法

        - execute():运行语句,返回是否有结果集。

        - executeQuery():运行select语句,返回ResultSet结果节

        - executeUpdate():运行insert/update/delete操作,返回更新的行数。

package com.yf.jdbc.test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * 测试执行SQL语句和SQL注入问题
 * @author yangf
 *
 */
public class Demo02 {
    public static void main(String[] args) {
        try {
            // 加载数据库驱动
            Class.forName("com.mysql.jdbc.Driver");
            // 获得connection对象 建立与数据库连接
            /*
             * 连接对象内部其实包含了Socket对象,是一个远程连接。比较耗时!这是Connection对象管理的一个要点。
             * 后面通过连接池来做
             */
            Connection con = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/testjdbc", "root", "123456");

            Statement stmt = con.createStatement();
            String sql = "insert into t_user (username,pwd,regTime) values (‘yyy‘,123123,now())";
            stmt.execute(sql);

            String sql1 = "delete from t_user where id = 4";
            stmt.execute(sql1);
            // 测试SQL注入
            // 由于是外部传入参数,所以可以任意修改DB,造成SQL注入,所以我们不适用Statement
            String id = "5 or 1 = 1";
            String sql2 = "delete from t_user where id = " + id;
            stmt.execute(sql2);

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
package com.yf.jdbc.test;

import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
/**
 * 测试PreparedStatement的基本用法
 * @author yangf
 *
 */
public class Demo03 {
    public static void main(String[] args) {
        try {
            // 加载数据库驱动
            Class.forName("com.mysql.jdbc.Driver");
            // 获得connection对象 建立与数据库连接
            Connection con = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/testjdbc", "root", "123456");
            String sql = "insert into t_user (username,pwd,regTime) values (?,?,?)";
            PreparedStatement ps = con.prepareStatement(sql);
            ps.setString(1, "yangf");
            ps.setInt(2, 888888);
            ps.setDate(3, new Date(System.currentTimeMillis()));

            ps.execute();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

ResultSet接口

      - Statement执行SQL语句时返回Result结果集。

      - ResultSet提供的检索不同类型字段的方法,常用的有:

        - getString():获得在数据库里是varchar,char等数据类型的对象。

        - getFloat():获得数据库里是Float类型的对象

        - getDate():获得数据库里是Date类型的对象

        - getBoolean():获得数据库里是Boolean类型的数据

      - 依序关闭使用的对象和连接

        Result->Statement->Connection

时间: 2024-11-11 03:16:30

jdbc—JDBC常用接口介绍的相关文章

JDBC中常用对象介绍

JDBC中的主要类(接口) 在JDBC中常用的类有: 1.DriverManager 2.Connection 3.Statement 4.ResultSet 1.DriverManager 其实我们今后只需要会用DriverManager的getConnection( )方法即可: 1. Class.forName("com.mysql.jdbc.Driver");//注册驱动 2. String url = "jdbc:mysq  l://localhost:3306/m

C#中常用接口介绍

1. IComparable接口 IComparable接口定义通用的比较方法.由类型使用的IComparable接口提供了一种比较多个对象的标准方式.如果一个类要实现与其它对象的比较, 则必须实现IComparable接口.由可以排序的类型,例如值类型实现以创建适合排序等目的类型特定的比较方法. 2. IComparer接口 是特定用于Array的Sort和BinarySearch方法,通过实现IComparer接口的Compare方法以确定Sort如何进行对对象进行排序 3. IEnumer

JDBC常用接口详解

JDBC中常用接口详解 ***DriverManager 第一.注册驱动 第一种方式:DriverManager.registerDriver(new com.mysql.jdbc.Driver()); 一.查看Driver的源代码可以看到,如果采用此种方式,会导致驱动程序注册两次,也就是在内存中会有两个Driver对象. 二.程序依赖mysql的api,脱离mysql的jar包,程序将无法编译,将来程序切换底层数据库将会非常麻烦. 第二种方式:Class.forName("com.mysql.

JDBC数据库编程常用接口(转)

JDBC的全称是Java DataBase Connectivity,是一套面向对象的应用程序接口(API),制定了统一的访问各种关系数据库的标准接口,为各个数据库厂商提供了标准接口的实现.这东西能够实现软件的扩平台性.JDBC是一种底层API,在访问数据库是需要在业务逻辑中直接嵌入SQL语句.JDBC不能够直接访问数据库,必须依赖数据库厂商提供的JDBC驱动程序完成以下三步工作1.同数据库建立连接:2.向数据库发送SQL语句:3.处理从数据库返回的结果. *JDBC驱动 1.JDBC-ODBC

Hive 接口介绍(Web UI/JDBC)

Hive 接口介绍(Web UI/JDBC) 实验简介 本次实验学习 Hive 的两种接口:Web UI 以及 JDBC. 一.实验环境说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到桌面上的程序: XfceTerminal: Linux命令行终端,打开后会进入Bash环境,可以使用Linux命令: Firefox:浏览器,可以用在需要前端界面的课程里,只需要打开环境里写

JDBC—01—JDBC简介;JDBC常用接口与类;

一. JDBC 简介 1 什么是 JDBC JDBC(Java DataBase Connectivity)java 数据库连接 是 JavaEE 平台下的技术规范 定义了在 Java 语言中连接数据,执行 SQL 语句的标准(标准即是接口:) 可以为多种关系数据库提供统一访问 2 什么是数据库驱动程序 数据库厂商对 JDBC 规范的具体实现,是接口的实现类: 不同数据产品的数据库驱动名字有差异 在程序中需要依赖数据库驱动来完成对数据库的操作 3 程序操作数据库流程 定义了在 Java 语言中连

day17(JDBC入门&jdbcUtils工具介绍)

day17 JDBC整体思维导图 JDBC入门 导jar包:驱动! 加载驱动类:Class.forName("类名"); 给出url.username.password,其中url背下来! 使用DriverManager类来得到Connection对象! ? ? ? 1 什么是JDBC JDBC(Java DataBase Connectivity)就是Java数据库连接,说白了就是用Java语言来操作数据库.原来我们操作数据库是在控制台使用SQL语句来操作数据库,JDBC是用Java

day18(JDBC事务&连接池介绍&DBUtils工具介绍&BaseServlet作用)

day18总结 今日思维导图: 今日内容 事务 连接池 ThreadLocal BaseServlet自定义Servlet父类(只要求会用,不要求会写) DBUtils à commons-dbutils ? 事务 ? 事务的四大特性:ACID: mysql中操作事务 jdbc中操作事务 ? ? ? 事务概述 为了方便演示事务,我们需要创建一个account表: CREATE TABLE account( ????id INT PRIMARY KEY AUTO_INCREMENT, ????NA

JDBC数据库常用操作(mysql)

JDBC英文名称:JavaDataBaseConnectivity中文名称:java数据库连接简称:JDBCJDBC是一种用于执行SQL语句的JavaAPI,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成.JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序. 一.建立数据库连接 1.引用jar文件(http://dev.mysql.com/downloads/connector/j/ 下载jar文件) 2.注册驱动Class