JDBC

一.什么是JDBC?

  JDBC代表Java数据库连接(Java Database Connectivity),它是用于Java编程语言和数据库之间的数据库无关连接的标准Java API,换句话说:JDBC是用于在Java语言编程中与数据库连接的API。

二.常见的JDBC组件

DriverManager:此类管理数据库驱动程序列表。 使用通信子协议将来
自java应用程序的连接请求与适当的数据库驱动程序进行匹配。在JDBC
下识别某个子协议的第一个驱动程序将用于建立数据库连接。

Driver:此接口处理与数据库服务器的通信。我们很少会直接与Driver对
象进行交互。 但会使用DriverManager对象来管理这种类型的对象。 它
还提取与使用Driver对象相关的信息。

Connection:此接口具有用于联系数据库的所有方法。 连接
(Connection)对象表示通信上下文,即,与数据库的所有通信仅通过连接
对象。

Statement:使用从此接口创建的对象将SQL语句提交到数据库。 除了执
行存储过程之外,一些派生接口还接受参数。

ResultSet:在使用Statement对象执行SQL查询后,这些对象保存从数据
库检索的数据。 它作为一个迭代器并可移动ResultSet对象查询的数据。

SQLException:此类处理数据库应用程序中发生的任何错误。

三.JDBC简单示例代码

构建JDBC应用程序涉及以下步骤:
  1.加载驱动
  2.获取数据库连接
  3.准备sql语句
  4.执行sql语句
  5.处理结果集
  6.关闭数据库连接
  7.异常处理

下面简单示例如何用代码实现:

1.MySQL中class数据库下新建了一张test表

2.定义一个PO类,类中的属性与表对应。

public class TestPO {
    private int id;
    private String name;
    private String password;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "TestPO{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

3.JDBC演示类

import java.sql.*;

public class JDBCDemo {
    public static void main(String[] args) {
        JDBCTest();
    }
    private static void JDBCTest(){
        //1.加载类驱动
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        Connection connection=null;
        PreparedStatement preparedStatement=null;
        ResultSet resultSet=null;
        //2.获取连接对象
        try {
            connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/class35","root","");
            //3.准备SQL语句
            String SQL="SELECT * FROM test";
            //4.执行SQL语句
            preparedStatement = connection.prepareStatement(SQL);
            //设置参数(有则设置,无则不设)
            //5.处理结果集
            resultSet=preparedStatement.executeQuery();
            //处理结果集结合next()方法,有则返回true,无则false;
            while (resultSet.next()){
                TestPO ts=new TestPO();
                ts.setId(resultSet.getInt("id"));
                ts.setName(resultSet.getString("name"));
                ts.setPassword(resultSet.getString("password"));
                System.out.println(ts);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            //6.释放资源
            if (resultSet!=null){
                try {
                    resultSet.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }finally {
                    if (preparedStatement!=null){
                        try {
                            preparedStatement.close();
                        } catch (SQLException e) {
                            e.printStackTrace();
                        }finally {
                            if (connection!=null){
                                try {
                                    connection.close();
                                } catch (SQLException e) {
                                    e.printStackTrace();
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}

控制台输出结果:

如何更改表中数据

执行增、删、改的SQL语句,需要调用statment的executeUpate()方法,返回值为int型,为影响行数。

下面演示如何更新表中的数据:

import java.sql.*;

public class JDBCDemo {
    public static void main(String[] args) {
        JDBCTest();
    }

    private static void JDBCTest(){
        //1.加载类驱动
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

        Connection connection=null;
        PreparedStatement preparedStatement=null;
        int resultSet=0;
        //2.获取连接对象
        try {
            connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/class35","root","");
            //3.准备SQL语句
            String SQL="UPDATE test SET name=? WHERE id=?";
            //4.执行SQL语句
            preparedStatement = connection.prepareStatement(SQL);
            //设置参数(有则设置,无则不设)
            preparedStatement.setString(1,"张三");
            preparedStatement.setString(2,"1");
            //5.处理结果集
            resultSet=preparedStatement.executeUpdate();
            System.out.println(resultSet);
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            if (preparedStatement!=null){
                try {
                    preparedStatement.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }finally {
                    if (connection!=null){
                        try {
                            connection.close();
                        } catch (SQLException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
        }
    }
}

控制台输出结果:

测试表更改结果:

 剩下的增(insert)、删(delete),只需要更改要执行的SQL语句就行了。

 

 

 

 

 

 

posted on 2018-08-11 10:28  _LuckyMan  阅读(159)  评论(0编辑  收藏  举报

导航