JDBC的简单实现数据库连接和操作

1.获得数据库驱动程序(由数据库厂商提供),并且将它加载到外部库中

2.注册和加载驱动程序

2.1注册 DriverManager.registerDriver(driver);

注册由系统自动添加,不需要敲入代码

2.2加载(有三种方法)

分别是:

2.2.1注册相应的dbjdbc驱动,在编译时需要导入对应的lib

new com.mysql.jdbc.Driver();

String url="jdbc:mysql://localhost:3306/databasename";

2.2.2通过系统的属性设置

System.setProperty("jdbc.driver","com.mysql.jdbc.Driver");

2.2.3最常用(通过反射加载)

Class.forName("com.mysql.jdbc.Driver");

这里会抛出ClassNotFoundException异常,需要try catch

"com.mysql.jdbc.Driver"的意义是Driver类的位置,处于com.mysql.jdbc

附常见的几种数据库加载:

1mysql5:             Class.forName("com.mysql.jdbc.Driver");

2mysql8:             Class.forName("com.mysql.cj.jdbc.Driver");

3Oracle11g及更早版本:        Class.forName("oracle.jdbc.driver.OracleDriver")

4Oracle12cOracle19c:     Class.forName("oracle.jdbc.OracleDriver")

5sqlserver2005-2019:           Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver")

6sqlserver2000:        Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver")

7JDBC-ODBC桥模式,以Access为例:      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

3.连接数据库

conn = DriverManager.getConnection(url, user, password);

会抛出SQLException,需要try catch

MySQL为例

String url = "jdbc:mysql://127.0.0.1:3306/db_test", user = "root", password = "123456"

其中127.0.0.1IP地址(这里是本机地址),3306MySQL 的端口号,db_test 为你个人所创建的数据库,user 默认root不需更改,password为设置的密码

附常见的数据库连接:

      1MySQL5.x的完整连接数据库代码为:

 Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/stusys","root", "123456");

      2MySQL8.x的完整连接数据库代码为:

 Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/stusys?serverTimezone=UTC","root", "123456");

      3SQL Server2005-2019系列

 Connection conn = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;databaseName=stusys",sa", "123456");

      4Oracle

 Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521/stusys",scott", "123456"); thin是一种瘦客户端的连接方式, oci是一种胖客户端的连接方式

4.操纵数据库

4.1创建Statement对象

stmt = conn.createStatement();//创建Statement对象

4.2stmt对象的常用三种方法

executeUpdate():修改数据库数据

stmt.executeUpdate(query);这里的querySQL语句字符串,完成添加、删除、修改功能的SQL语句都可以放入这里

executeQuery():查询数据库数据

ResultSet rs stmt.executeQuery(query);这里的query是执行查询操作的SQL语句字符串

execute():执行添、删、改、查四种操作

stmt.execute(query);

4.3创建预处理对象(重复性的查询可以使用,提高效率)

String sql1 = "insert into xsb values(?,?,1)";//问号代表占位符

statement1 = conn.prepareStatement(sql1);//这里预处理要提前把sql语句加入

statement1.setString(1,"1003");//参数1代表“?”的位置(位置从1开始),第二个代表替代值

statement1.setString(2,"tony");

statement1.executeUpdate();

5.与数据库断开连接

断开连接时与创建连接相反,从下到上一一关闭,并且关闭的时候有SQLException异常需要处理,因为关闭必须要执行因此一一写在finally语句块中,值得注意的是这里的rs,stmt等变量不能是局部变量。

        finally {

            try {

                rs.close();

            } catch (SQLException e) {

                System.out.println(e);

            }

            try {

                stmt.close();

            } catch (SQLException e) {

                System.out.println(e);

            }

            try {

                conn.close();

            } catch (SQLException e) {

                System.out.println(e);

            }

        }

}

6.运行结果的查看

两条数据已插入

7.小结:

1)大体分五步

1.获得驱动加到项目中2.注册并且加载3.连接数据库4.操纵数据库5.断开与数据库的连接

1)加载驱动的时候注意不能出错(建议直接复制粘贴,再具体修改),连接数据库也是如此

(2)注意异常的捕获

(3)断开连接的语句块写在finally 里,同时也要捕获异常

最后附上源代码:

package com;
import java.sql.*;
public class jdbcMysql {
    public static void main(String args[]) {
        /*
         * 注册和加载JDBC驱动
         * 1.注册 DriverManager.registerDriver(driver);
         * 2.加载,有三种方法
         * 3.与数据库建立连接
         * 4.操纵数据库
         * 5.对返回的结果进行处理
         * */
        String url = "jdbc:mysql://127.0.0.1:3306/db_test", user = "root", password = "123456";
        Connection conn = null;
        Statement stmt = null;
        PreparedStatement statement1 = null;
        String sql;
        ResultSet rs = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");  // 2. 加载,param:类所在的位置
            conn = DriverManager.getConnection(url, user, password);//抛出异常

            stmt = conn.createStatement();//创建Statement对象
            sql = "insert into xsb values('1002','tim','0')";
            String sql2 = "select * from xsb";
            stmt.executeUpdate(sql);
            stmt.executeQuery(sql2);// 执行sql语句
            rs = stmt.executeQuery(sql2);
            while (rs.next()) {
                System.out.println(rs.getString(1) + "\t" + rs.getString(2) + "\t" + rs.getString(3));

            }
            // 创建预处理对象
            String sql1 = "insert into xsb values(?,?,1)";
            statement1 = conn.prepareStatement(sql1);
            statement1.setString(1, "1003");
            statement1.setString(2, "tony");
            statement1.executeUpdate();
            rs = statement1.executeQuery(sql2);
            while (rs.next()) {
                System.out.println(rs.getInt(1) + "\t" + rs.getString(2) + "\t" + rs.getString(3));
            }

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        // 一定要执行的语句,关闭连接
        finally {
            try {//最好进行判空操作,这里懒得改了
                rs.close();
            } catch (SQLException e) {
                System.out.println(e);
            }
            try {
                stmt.close();
            } catch (SQLException e) {
                System.out.println(e);
            }
            try {
                conn.close();
            } catch (SQLException e) {
                System.out.println(e);
            }

        }
    }
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值