加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 数据库 > MsSql > 正文

JDBC基础教程

发布时间:2020-05-23 17:31:24 所属栏目:MsSql 来源:互联网
导读:本文实例讲述了JDBC基础知识与技巧。分享给大家供大家参考。具体分析如下:

本文实例讲述了JDBC基础知识与技巧。分享给大家供大家参考。具体分析如下:

1.什么是JDBC?

通俗来讲JDBC技术就是通过java程序来发送SQL语句到数据库,数据库收到SQL语句后执行,把结果返回给java程序管理。

2.使用JDBC要有什么条件呢?

A)目标数据库主机的地址

B)数据库软件在该主机上所占用的端口号

C)登陆数据库用的用户名

D)该用户名的密码

E)连接数据库

3.JDBC技术的原理

我们知道,数据库是有各种类型的,不同的厂商生产的数据库标格和规范是不同的,这时候,如果我们用JAVA代码来发送SQL语句,就要根据不同的数据库来写一套又一套的操作代码,这对程序开发者的开发成本是十分巨大的,所以,SUN公司在开发JDBC技术的时候,规定了一套标准接口,数据库产商都必须提供一个驱动来实现这套接口,那么,只要程序开发者在开发时使用了该数据库的驱动,就用一致的方法来开发了,而不需自己写一套有一套的代码去适应不同的数据库。

4.JDBC中的核心API

|- Driver : 驱动程序类实现的接口。

  |-Connection connect(String url,Properties info)  --用于连接数据库,得到连接对象

Properties 里需要设置的参数:

    url: 数据库连接的URL字符串。协议+数据库子协议+主机+端口+数据库

    user: 数据库用户名

    password: 用户的密码

  |-Connection :    与数据库连接的接口

      |- Statement createStatement()   --创建Statement对象,用于发送sql语句

      |- PreparedStatement prepareStatement(String sql)  -创建PreparedStatement对象,用于发送预编译的sql语句

      |-CallableStatement prepareCall(String sql)  --创建CallableStatement对象,用于调用存储过程。

      |-Statement: 用于执行静态sql语句

          |-int executeUpdate(String sql)  --执行更新操作(DDL+DML)

          |-ResultSet executeQuery(String sql)  --执行查询操作(DQL)

      |- PreparedStatement: 用于执行预编译的sql语句

          |- int executeUpdate() -- 执行更新操作

          |- ResultSet executeQuery()    -- 执行查询操作

      |- CallableStatement: 用于执行存储过程的sql

          |- ResultSet executeQuery()  --调用存储过程

          |- ResultSet: 结果集。用于封装数据库的查询后的数据

              |- boolean next() --将记录光标移动到下一行

              |- Object getObject(int columnIndex) -- 得到字段上的值

了解完又哪些API,下面我们就来使用JDBC发送SQL语句吧~

5.使用Statement对象操作数据库

DDL与DML操作

步骤1

导包,因为我使用的是MySQL数据库,所以要使用JDBC技术,必须使用由MySQL数据库产商提供的数据库驱动,所以,第一步我们要把数据库驱动包导入工程里。

使用的包名:mysql-connector-java-5.1.7-bin.jar

步骤2

创建一个普通的类,在里面添加一个方法,在该方法中按照以下步骤
复制代码 代码如下://URL
    private String url = "jdbc:mysql://localhost:3306/vmaxtam";
    //user
    private String user = "root";
    //password
    private String password = "root";

public void testDDL()throws Exception{
        //1.注册驱动
        Class.forName("com.mysql.jdbc.Driver");
       
        //2.获取连接
        Connection conn = DriverManager.getConnection(url,user,password);
       
        //3.创建Statement对象
        Statement stmt = conn.createStatement();
       
        //4.准备sql语句
        String sql  ="CREATE TABLE student(sid INT PRIMARY KEY,sname VARCHAR(20),age INT)";
       
        //5.通过statement对象发送sql语句,返回执行结果
        int count = stmt.executeUpdate(sql);
       
        //6.打印执行结果
        System.out.println("影响了"+count+"条记录");
}
//7.关闭资源
if(statement!=null)
{
    statement.close();
}

if(conn!=null)
{
    conn.close();
}
如果要进行DQL与DDL操作,都可以把SQL语句写好,然后调用statement的executlUpdate方法来给数据库执行SQL语句,这个方法返回一个整数值,表示数据库中有多少行受到了影响。

如果我们不改变上述的程序,想要再向数据库发出SQL语句,那么又要写一个程序来再次连接,操作完后又要关闭statement对象 和connection对象,这是十分繁琐的。所以,我们一般把连接过程和释放对象的过程抽取到一个工具类中。工具类中的代码如下:
复制代码 代码如下:public class sqlUtil {
    private static String url = "jdbc:mysql://localhost:3306/vmaxtam";
    private static String user = "root";
    private static String password = "root";

    // 获取连接
    public static Connection getconnection() {
        Connection conn = null;
        try {
            // 1.注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            // 2.获取连接
            conn = DriverManager.getConnection(url,password);
            // 3.获得statement对象
            Statement statement = conn.createStatement();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return conn;
    }

    // 7.关闭资源
    public static void close(Statement statement,Connection connection) {
        {
            try {
                if (statement != null)
                    statement.close();
                if (connection != null) {
                    connection.close();
                }
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
}

还要考虑的情况就是:

一)一个用户只需要注册一次驱动就行,不用每次连接数据库都注册驱动,所以我们把注册驱动的过程写在静态代码块中。

二)url 和用户名,密码还有驱动类名,在程序里是写死的,为了能够在不改代码的前提下更换数据库 或者更换用户,我们通常把这些信息写到一份配置文件中。

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读