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 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> java数据库(mysql)连接总结 -> 正文阅读

[大数据]java数据库(mysql)连接总结

需要先导入此包
在这里插入图片描述

建表语句

create database jdbc;

create table users( id int PRIMARY key auto_increment, name
varchar(40), password varchar(40), email varchar(60), birthday DATE );

insert into users(name,password,email,birthday) values
(‘zs’,‘123456’,‘zs@sina.com’,‘1980-12-04’),
(‘lisi’,‘123456’,‘lisi@sina.com’,‘1980-12-04’),
(‘wangwu’,‘123456’,‘wangwu@sina.com’,‘1979-12-04’);

在这里插入图片描述
在这里插入图片描述
Driver接口是所有JDBC驱动程序必须实现的接口,该接口专门提供给数据库厂商使用。需要注意的是,在编写JDBC程序时,必须要把所使用的数据库驱动程序或类库加载到项目的classpath中(这里指MySQL驱动JAR包)

DriverManager类用于加载JDBC驱动并且创建与数据库的连接。
在这里插入图片描述
Connection接口代表Java程序和数据库的连接,只有获得该连接对象后,才能访问数据库,并操作数据表。在Connection接口中,定义了一系列方法,其常用方法如下所示。
在这里插入图片描述
Statement接口用于执行静态的SQL语句,并返回一个结果对象。Statement接口对象可以通过Connection实例的createStatement()方法获得,该对象会把静态的SQL语句发送到数据库中编译执行,然后返回数据库的处理结果。在Statement接口中,提供了3个常用的执行SQL语句的方法,具体如下所示。

在这里插入图片描述
在这里插入图片描述
ResultSet接口用于保存JDBC执行查询时返回的结果集,该结果集封装在一个逻辑表格中。
在ResultSet接口内部有一个指向表格数据行的游标(或指针),ResultSet对象初始化时,游标在表格的第一行之前调用next()方法可将游标移动到下一行。如果下一行没有数据,则返回false。在应用程序中经常使用next()方法作为while循环的条件来迭代ResultSet结果集。ResultSet接口中的常用方法如下所示。
在这里插入图片描述
通常,JDBC的使用可以按照以下几个步骤进行:
(1)加载并注册数据库驱动。
(2)通过DriverManager获取数据库连接。
(3)通过Connection对象获取Statement对象。
(4)使用Statement执行SQL语句。
(5)操作ResultSet结果集。
(6)关闭连接,释放资源。

package Test;

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

public class test1 {
    public static void main(String[] args) throws Exception {
        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc", "root", "123456");
            statement = connection.createStatement();
            resultSet = statement.executeQuery("select * from users");
            while (resultSet.next()) {
                System.out.println(resultSet.getInt("id") + ":" + resultSet.getString("name") + ":" + resultSet.getString("password") +
                        ":" + resultSet.getString("email") + ":" + resultSet.getDate("birthday"));
            }

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            resultSet.close();
            statement.close();
            connection.close();
        }
    }
}

输出:
在这里插入图片描述

PreparedStatement对象可以对SQL语句进行预编译,预编译的信息会存储在该对象中。当相同的SQL语句再次执行时,程序会使用PreparedStatement对象中的数据,而不需要对SQL语句再次编译去查询数据库,这样就大大的提高了数据的访问效率。

package Test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

public class test2 {
    public static void main(String[] args) throws Exception {
        Connection conn= null;
        PreparedStatement ps=null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc",
                    "root","123456");
            String insert="insert into users(name,password,email,birthday) values" +
                    "(?,?,?,?)";
            ps=conn.prepareStatement(insert);
            ps.setString(1,"zl");
            ps.setString(2,"123456");
            ps.setString(3,"zl@sina.com");
            ps.setString(4,"1987-12-23");
            ps.executeUpdate();
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            if(ps!=null){
                ps.close();
            }
            if(conn!=null){
                conn.close();
            }
        }
    }
}

再次运行第一次的代码:
在这里插入图片描述

ResultSet主要用于存储结果集,可以通过next()方法由前向后逐个获取结果集中的数据,如果想获取结果集中任意位置的数据,则需要在创建Statement对象时,设置两个ResultSet定义的常量,具体设置方式如下:
Statement st = conn.createStatement(
ResultSet.TYPE_SCROLL_INSENITIVE,
ResultSet.CONCUR_READ_ONLY
);
ResultSet rs = st.excuteQuery(sql);
在上述方式中,常量“Result.TYPE_SCROLL_INSENITIVE”表示结果集可滚动,常量“ResultSet.CONCUR_READ_ONLY”
表示以只读形式打开结果集。

package Test;

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

public class test3 {
    public static void main(String[] args) throws Exception {
        Connection conn=null;
        Statement statement=null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc",
                    "root","123456");
            String sql="select * from users";
            statement=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                    ResultSet.CONCUR_READ_ONLY);
            ResultSet rs=statement.executeQuery(sql);
            System.out.print("第二条数据为:");
            rs.absolute(2);
            System.out.println(rs.getString("name"));


            System.out.print("第一条数据为:");
            rs.beforeFirst();
            rs.next();
            System.out.println(rs.getString("name"));


            System.out.print("第四条数据为:");
            rs.afterLast();
            rs.previous();
            System.out.println(rs.getString("name"));
            System.out.println();
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            if(statement!=null){
                statement.close();
            }
            if(conn!=null){
                conn.close();
            }
        }
    }
}

输出:

在这里插入图片描述

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-11-09 19:37:21  更:2021-11-09 19:37:33 
 
开发: 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 6:09:56-

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