第四节 JDBC简单示例代码

本文章教程中将演示如何创建一个简单的JDBC应用程序的示例。 这将显示如何打开数据库连接,执行SQL查询并显示结果。

这个示例代码中涉及所有步骤,一些步骤将在本教程的后续章节中进行说明。

创建JDBC应用程序

构建JDBC应用程序涉及以下六个步骤 -

  • 导入包:需要包含包含数据库编程所需的JDBC类的包。 大多数情况下,使用import java.sql.*就足够了。
  • 注册JDBC驱动程序:需要初始化驱动程序,以便可以打开与数据库的通信通道。
  • 打开一个连接:需要使用DriverManager.getConnection()方法创建一个Connection对象,它表示与数据库的物理连接。
  • 执行查询:需要使用类型为Statement的对象来构建和提交SQL语句到数据库。
  • 从结果集中提取数据:需要使用相应的ResultSet.getXXX()方法从结果集中检索数据。
  • 清理环境:需要明确地关闭所有数据库资源,而不依赖于JVM的垃圾收集。

示例代码

当您以后需要创建自己的JDBC应用程序时,可将此示例可以作为模板使用,建议您收藏好此网页。

此示例代码是基于上一章完成的环境和数据库设置之后编写的。

FirstExample.java (F:\worksp\jdbc\FirstExample.java)中复制并粘贴以下示例,编译并运行如下 -


//STEP 1. Import required packages
import java.sql.*;public class FirstExample {// JDBC driver name and database URLstatic final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  static final String DB_URL = "jdbc:mysql://localhost/emp";//  Database credentialsstatic final String USER = "root";static final String PASS = "123456";public static void main(String[] args) {Connection conn = null;Statement stmt = null;try{//STEP 2: Register JDBC driverClass.forName("com.mysql.jdbc.Driver");//STEP 3: Open a connectionSystem.out.println("Connecting to database...");conn = DriverManager.getConnection(DB_URL,USER,PASS);//STEP 4: Execute a querySystem.out.println("Creating statement...");stmt = conn.createStatement();String sql;sql = "SELECT id, first, last, age FROM Employees";ResultSet rs = stmt.executeQuery(sql);//STEP 5: Extract data from result setwhile(rs.next()){//Retrieve by column nameint id  = rs.getInt("id");int age = rs.getInt("age");String first = rs.getString("first");String last = rs.getString("last");//Display valuesSystem.out.print("ID: " + id);System.out.print(", Age: " + age);System.out.print(", First: " + first);System.out.println(", Last: " + last);}//STEP 6: Clean-up environmentrs.close();stmt.close();conn.close();}catch(SQLException se){//Handle errors for JDBCse.printStackTrace();}catch(Exception e){//Handle errors for Class.forNamee.printStackTrace();}finally{//finally block used to close resourcestry{if(stmt!=null)stmt.close();}catch(SQLException se2){}// nothing we can dotry{if(conn!=null)conn.close();}catch(SQLException se){se.printStackTrace();}//end finally try}//end trySystem.out.println("There are so thing wrong!");
}//end main
}//end FirstExample

Java

把上面代码存放到 F:\worksp\jdbc\FirstExample.java 文件中,并创建一个目录:F:\worksp\jdbc\libs,下载 mysql-connector-java-5.1.40-bin.jar 放入到F:\worksp\jdbc\libs 目录中。

下载地址:MySQL :: Download MySQL Connector/J (Archived Versions)

使用命令行编译Java程序并加载指定目录中的Jar包(mysql-connector-java-5.1.40-bin.jar):

F:\worksp\jdbc> javac -Djava.ext.dirs=./libs FirstExample.java
##-- 或者
F:\worksp\jdbc> javac -Djava.ext.dirs=F:\worksp\jdbc\libs FirstExample.java

Shell

编译上面代码后,得到以下结果 -

## F:\worksp\jdbc>javac -Djava.ext.dirs=./libs FirstExample.java
## 运行程序 -
F:\worksp\jdbc>java -Djava.ext.dirs=./libs FirstExample
Connecting to database...
Tue May 30 22:43:18 CST 2017 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
Creating statement...
ID: 100, Age: 28, First: Max, Last: Su
ID: 101, Age: 25, First: Wei, Last: Wang
ID: 102, Age: 30, First: Xueyou, Last: Zhang
ID: 103, Age: 28, First: Jack, Last: Ma
There are so thing wrong!F:\worksp\jdbc>

Shell

完整的执行过程如下 -

或者使用 Eclipse 或其它IDE创建代码执行。


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/722993.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java并发编程-进程和线程

一、进程和线程 1. 进程 什么是进程? 简单来说,进程就是程序的一次启动和执行。进程是操作系统中的一个概念,它代表正在运行的程序的实例。每个进程都有自己的内存空间、代码和数据,以及其他操作系统资源,如文件和设备…

Git分布式管理-头歌实验远程版本库

Git的一大特点就是,能为不同系统下的开发者提供了一个协作开发的平台。而团队如果要基于Git进行协同开发,就必须依赖远程版本库。远程版本库允许,我们将本地版本库保存在远端服务器,而且,不同的开发者也是基于远程版本…

力扣hot100:560.和为K的子数组(前缀和+哈希表)

分析: 这个题目乍一看,数据大小用暴力解法大概率会超时,可能想用双指针,但是问题出现在 可能存在负数,也就是说即使是找到了一个答案,后面也可能存在负数和正数抵消,又是答案,因此不…

SpringBoot集成Logback

logback logback-core:其它两个模块的基础模块。logback-classic:它是log4j的一个改良版本,同时它完整实现了slf4j API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging。logback-access:访问模块与Servlet容器集成提供…

08-prometheus监控的告警通知-alertmanager组件工具

一、概述 prometheus通过规则文件对比抓取到的数据,来判断是否触发告警,我们通过配置告警的工具altermanager进行告警通知; 规则文件,写的就是,当我们获取到的PromeQL的值到达一个设置的规则后,触发告警&am…

刷题笔记day27-回溯算法3

39. 组合总和 var path []int var tmp []int var result [][]int// 还是需要去重复,题目中要求的是至少一个数字备选的数量不同。 // 所以需要剪枝操作,右边的要比左边的> func combinationSum(candidates []int, target int) [][]int {// 组合问题pa…

白皮书发布|超融合运行 K8s 的场景、功能与优势

目前,不少企业都使用虚拟化/超融合运行 Kubernetes 和容器化应用。一些用户可能会有疑惑:既然 Kubernetes 可以部署在裸金属上,使用虚拟化不是“多此一举”吗? 在电子书《IT 基础架构团队的 Kubernetes 管理:从入门到…

详细分析Vue中的$refs用法

目录 1. 基本知识2. Demo 1. 基本知识 在Vue.js中,$refs是一个特殊的属性,用于在组件内部直接访问子组件或者DOM元素 作用: 访问DOM元素: 直接访问模板中的DOM元素,以便执行DOM操作,如聚焦、改变样式等 访…

[极客大挑战 2020]Roamphp1-Welcome ---不会编程的崽

buuctf上的题难度适中。越到后边会越难&#xff0c;但也有例外 页面报错了。报错的原因可能有很多种猜想。所以有没有一种可能是故意这么设计的。先抓包吧 发现是GET请求。修改请求方法再试试呢&#xff1f; <?php error_reporting(0); if ($_SERVER[REQUEST_METHOD] ! P…

Android Studio开发(一) 构建项目

1、项目创建测试 1.1 前言 Android Studio 是由 Google 推出的官方集成开发环境&#xff08;IDE&#xff09;&#xff0c;专门用于开发 Android 应用程序。 基于 IntelliJ IDEA: Android Studio 是基于 JetBrains 的 IntelliJ IDEA 开发的&#xff0c;提供了丰富的功能和插件…

Python 全栈系列232 再次搭建RabbitMQ

说明 最近想重新上RabbitMQ&#xff0c;主要目的还是为了分布式任务调度。在Kafka和RabbitMQ两者犹豫了一下&#xff0c;还是觉得RabbitMQ好一些。 在20年的时候有搞过一阵子的RabbitMQ,看了下当时的几篇文章&#xff0c;觉得其实想法一直没变过。 Python - 装机系列24 消息…

常用“树”数据结构

哈夫曼树 在许多应用中&#xff0c;树中结点常常被赋予一个表示某种意义的数值&#xff0c;称为该结点的权。从树的根到任意结点的路径长度(经过的边数)与该结点上权值的乘积&#xff0c;称为该结点的带权路径长度。树中所有叶结点的带权路径长度之和称为该树的带权路径长度&am…

出现身份验证错误,无法连接到本地安全机构 顺利解决这个问题希望能帮助大家

出现身份验证错误&#xff0c;无法连接到本地安全机构&#xff0c;远程计算机&#xff1a;XX&#xff0c;这可能是由于密码过期&#xff0c;如果密码已过期请更新密码。 我们可以在系统属性中对远程进行设置&#xff0c;以解决远程桌面无法连接到本地安全机构这一问题。 步骤…

倒计时34天

L2-1 堆宝塔 - B107 2023级选拔春季开学测重现 (pintia.cn) #include<bits/stdc.h> using namespace std; //#define int long long const int N2e56; const int inf0x3f3f3f3f; const double piacos(-1.0); vector<int>ve1,ve2; vector<vector<int> >…

企业出海WAS安全自动化解决方案

随着企业出海的日益激烈&#xff0c;安全风险正在成为企业日益关注的问题之一&#xff0c;九河云携手AWS带来了使用Amazon WAF 与 Amazon Shield 的 CloudFront安全自动化。Aws WAF是一种web应用防火墙&#xff0c;可帮助保护客户的web应用程序或api免遭常规web漏洞的攻击。Aws…

【Hadoop大数据技术】——Hadoop概述与搭建环境(学习笔记)

&#x1f4d6; 前言&#xff1a;随着大数据时代的到来&#xff0c;大数据已经在金融、交通、物流等各个行业领域得到广泛应用。而Hadoop就是一个用于处理海量数据的框架&#xff0c;它既可以为海量数据提供可靠的存储&#xff1b;也可以为海量数据提供高效的处理。 目录 &#…

【数据结构】用栈实现队列

前言&#xff1a;本节博客分享了用栈实现队列效果的思路以及代码&#xff0c;有需要借鉴即可。 1.题目及链接 LINK 2.思路分析 如果要用栈实现队列&#xff0c;我们直到栈是先入后出的一个效果&#xff0c;所以我们可以用两个栈&#xff0c;这样逆转两次数不就是入栈之前数组…

SpringBoot约定大于配置

什么是约定大于配置 "约定大于配置"&#xff08;Convention Over Configuration&#xff09;是一种理念&#xff0c;旨在通过默认约定和规则来减少开发人员需要做的配置工作。在Spring Boot框架中&#xff0c;这一原则得到了充分应用&#xff0c;帮助开发者更快地构…

Blender和3ds Max哪个会是行业未来?

Blender和3ds Max都是很强大的三维建模和渲染软件&#xff0c;各有各的好处。选择哪个软件更好&#xff0c;要看你的需求、预算、技术水平以及行业趋势等因素。 Blender最大的优点是免费且开源&#xff0c;这对预算有限的个人和小团队来说很有吸引力。它有很多建模工具和功能&…

在电脑桌面打开任意应用程序的快捷键

首先为某个程序&#xff08;比如谷歌浏览器&#xff09;创建一个快捷方式&#xff0c; 其次右键快捷方式&#xff0c;找到属性一栏 单击快捷键三个字右边的方框&#xff08;里面有一个“无”&#xff09;&#xff0c;然后按下你所需要设置的快捷键