IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> JDBC的简单实现数据库连接和操作 -> 正文阅读

[大数据]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);
            }

        }
    }
}

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-11-09 19:37:22  更:2021-11-09 19:38:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:52:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码