首页 > 编程语言 >第一个JDBC程序

第一个JDBC程序

时间:2024-02-22 21:12:32浏览次数:34  
标签:jdbc 第一个 resultSet 数据库 程序 JDBC mysql com String

JDBC

数据库驱动

程序通过数据库驱动和数据库联系

SUN公司为了简化开发人员(对数据库的统一)操作,提供了一个(Java操作数据库的)规范,俗称JDBC ,这些规范的实现由具体的厂商实现

对开发人员来说只需要掌握JDBC接口的操作即可

第一个JDBC程序

需要的包

java.sql

javax.sql

还需要导入一个数据库驱动的包 mysql-connector-java-5.1.47.jar

下载数据库驱动的包

https://dev.mysql.com/downloads/connector/j/

新建一个lib,将mysql-connector-java-5.1.47.jar复制过去,并且 Add as Library(点击一下)

编写测试代码

package com.wang.test01;
import java.sql.*;
//第一个JDBC程序
public class JdbcFirstDemo {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        // 加载驱动
        Class.forName("com.mysql.cj.jdbc.Driver"); // 固定写法,加载驱动

        //用户信息和url
        //useUnicode=true&characterEncoding=utf8&useSSL=true
        String url = "jdbc:mysql://localhost:3306/school?useUnicode=true&characterEncoding=utf8&useSSL=true";
        String username = "root";
        String password = "123456";
        //连接成功 数据库对象 Connection 代表数据库
        Connection connection = DriverManager.getConnection(url, username, password);

        //执行SQL的对象 Statement 执行sql的对象
        Statement statement = connection.createStatement();

        // 执行SQL的对象 去 执行SQL 可能存在的结果 查看返回结果
        String sql = "select * from student";

        ResultSet resultSet = statement.executeQuery(sql); // 返回的结果集,结果集中封装了我们全部的查询的结果

        while(resultSet.next()){
            System.out.println(resultSet.getObject("id"));
            System.out.println(resultSet.getObject("name"));
        }

        // 释放连接
        resultSet.close();
        statement.close();
        connection.close();
    }
}
/*实验结果
F:\code\java\jdbc\target\classes;F:\code\java\jdbc\lib\mysql-connector-j-8.3.0.jar com.wang.test01.JdbcFirstDemo
1
ww
2
wl
*/

步骤总结:

加载驱动 、 连接数据库DriverManager 、获得执行sql的对象Statement 、 获得返回的结果集、 释放连接

出现的问题

  • 出现的问题 (来自 https://blog.csdn.net/qq_41943867/article/details/90574135)

    Loading class com.mysql.jdbc.Driver'. This is deprecated. The new driver class is com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.

    5.x版本的驱动文件jar包对应的是:
    Class.forName("com.mysql.jdbc.Driver");
    语句来加载数据库驱动
    
    而我使用的是8.0x版本的数据库驱动文件,对此,需要将加载数据库驱动的语句更改为:
    Class.forName("com.mysql.cj.jdbc.Driver");
    
    除此之外:
    url的设置也得进行修改,原本的url如下:
    String ur="jdbc:mysql://127.0.0.1:3306/student";
    
    应修改为如下:String url="jdbc:mysql://127.0.0.1:3306/student?useUnicode=true&characterEncoding=UTF-8&userSSL=false&serverTimezone=GMT%2B8";
    

对JDBC中对象的解释

DriverManager

//DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());
  Class.forName("com.mysql.cj.jdbc.Driver"); // 固定写法,加载驱动
  
  Connection connection = DriverManager.getConnection(url, username, password);
  // connection 代表数据库
  // 数据库设置自动提交
  // 事务提交
  // 事务回滚
connection.rollback();
connection.commit();
connection.setAutoCommit();

URL

String url = "jdbc:mysql://localhost:3306/school?useUnicode=true&characterEncoding=utf8&useSSL=true";
//mysql默认是3306
//jdbc:mysql://主机地址:3306/数据库名?参数1&参数2&参数3
//oralca 默认端口是1521
//jdbc:oracle:thin@localhost:1521:sid

Statement 执行SQL 的对象

String sql = "select * from student";//编写SQL

statement.executeQuery();// 查询操作,返回ResultSet
statement.execute(); //执行任何的SQL
statement.executeUpdate();// 更新、插入、删除 都是用这个,返回的是一个受影响的行数

ResultSet 结果集对象(封装了所有的查询结果)

获取指定的数据类型

resultSet.getObject();//在不知道列的类型的情况下使用
resultSet.getInt();
resultSet.getString();
....

释放资源(必须)

// 释放连接
resultSet.close();
statement.close();
connection.close();// 耗资源 ,用完关闭

标签:jdbc,第一个,resultSet,数据库,程序,JDBC,mysql,com,String
From: https://www.cnblogs.com/shijili/p/18028201

相关文章

  • 《程序是怎样跑起来的》第六章观后感。
    我是计应232的学生张凯源,今天来分享《程序是怎样跑起来的》第六章观后感。第六章主要讲解了几种压缩文件的方法:RLE算法、哈弗曼编码。首先作者告诉我们,文件是以数据的方式来进行储存的,然后紧接着就向我们详细的讲解了RLE算法的机制。RLE算法就是采用“字符*重复次数”来进行文件......
  • 程序是怎样跑起来的读后感7
    《程序是怎样跑起来的》第七章读后感《程序是怎样跑起来的》这本书通过生动图解和浅显易懂的语言,为读者展示了程序在计算机中运行的原理。第七章作为这本书的一部分,继续了这一风格,聚焦于内存和磁盘等存储设备,深入探讨了程序如何与这些设备进行交互。这一章让我对内存有了更为深......
  • 《程序是怎样跑起来的》第四章读后感
    在深入研读了《程序是怎样跑起来的》第四章之后,我深感其内容的严谨与深入,不仅详细解释了程序从编译到执行的过程,还展示了这一流程中的各个关键环节。首先,我被第四章中关于编译器和链接器的工作原理所吸引。编译器将人类编写的源代码转化为机器语言,这是一个复杂的过程,涉及到词法分......
  • 程序是怎样跑起来的第十章读后感
    读过第10章通过汇编语言了解程序的实际构成,从中知道了本地代码的指令中,表示其功能英语缩写被称为助记符,汇编语言是通过利用助记符来记述程序的。知道如何使用汇编器这个工具来进行汇编。编语言的源代码转换成本地代码的方式是什么,并且发现有一些问题是解释清楚的,从这一章中能解......
  • 《程序是怎样跑起来的》第五章读后感
    阅读第五章我很受启发。首先,我了解到内存和磁盘虽然都是计算机的存储部件,但它们的工作机制和特性却截然不同。内存利用电流进行高速存储,但由于成本较高所以容量有限;而磁盘则是通过磁效应实现数据存储,速度较慢但价格相对低廉,能提供大量存储空间。程序以存储程序方式保存在磁盘等存......
  • 程序是怎样跑起来的读后感
    《程序是怎样跑起来》第六章读后感《程序是怎样跑起来》这本书以其深入浅出的方式和生动的图解,为读者展示了程序在计算机中运行的原理。第六章作为这本书的一部分,同样继承了这种风格,为我们揭示了从C源代码到机器码的过程,以及CPU如何执行这些代码。这一章详细地描述了CPU的内部结......
  • 《程序是怎样跑起来的》第十一章:硬件控制方法的深度解读
    在第十一章中,作者聚焦于硬件控制方法,为我们揭示了程序与硬件之间的紧密联系。硬件控制方法是程序运行不可或缺的一部分。从中央处理器、内存到输入输出设备硬件为程序的运行提供了必要的支持。在当今的计算机世界,硬件的更新换代速度之快令人目不暇接。而作为开发人员,我们需要深入......
  • 《程序是怎样跑起来的》第十二章:让计算机“思考”
    读完《程序是怎样跑起来的》的第十二章我对于计算机如何实现“思考”有了更深的理解。这一章主要探讨了计算机如何进行算法分析和设计,以及机器学习等高级功能让我重新认识了计曾机当后的复性和智慧。在之前的章节中,我了解到了计算机的基本构成和运行原理,包括CPU、内存、输入输出设......
  • 《程序是怎样跑起来的》第八章
    这一章主要介绍了程序在内存中的状态以及CPU如何处理这些程序。通过了解程序的加载、链接和执行过程,我意识到内存管理对程序运行的重要性。程序在运行时,需要在内存中分配空间以存储数据和指令,而内存的有效管理直接关系到程序的性能和稳定性。书中对CPU的工作原理进行了详细的阐......
  • 代码随想录算法训练营day02 | leetcode 977. 有序数组的平方、35.搜索插入位置、34.在
    题目链接:977.有序数组的平方-简单题目描述:给你一个按非递减顺序排序的整数数组nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。示例1:输入:nums=[-4,-1,0,3,10]输出:[0,1,9,16,100]解释:平方后,数组变为[16,1,0,9,100]排序后,数组变为[0,1,9,16,100]......