Java中JDBC初识

【JAVA高级】——初识JDBC中DAO数据访问对象 初识JDBC中DAO数据访问对象 阅读详情

JDBC入门

l  导jar包:驱动!

l  加载驱动类:Class.forName(“类名”);

l  给出url、username、password,其中url背下来!

l  使用DriverManager类来得到Connection对象!

什么是JDBC

  JDBC(Java DataBase Connectivity)就是Java数据库连接,说白了就是用Java语言来操作数据库。原来我们操作数据库是在控制台使用SQL语句来操作数据库,JDBC是用Java语言向数据库发送SQL语句。

JDBC原理

早期SUN公司的天才们想编写一套可以连接天下所有数据库的API,但是当他们刚刚开始时就发现这是不可完成的任务,因为各个厂商的数据库服务器差异太大了。后来SUN开始与数据库厂商们讨论,最终得出的结论是,由SUN提供一套访问数据库的规范(就是一组接口),并提供连接数据库的协议标准,然后各个数据库厂商会遵循SUN的规范提供一套访问自己公司的数据库服务器的API出现。SUN提供的规范命名为JDBC,而各个厂商提供的,遵循了JDBC规范的,可以访问自己数据库的API被称之为驱动!

JDBC是接口,而JDBC驱动才是接口的实现,没有驱动无法完成数据库连接!每个数据库厂商都有自己的驱动,用来连接自己公司的数据库。

当然还有第三方公司专门为某一数据库提供驱动,这样的驱动往往不是开源免费的!


JDBC核心类

JDBC中的核心类有:DriverManager、Connection、Statement,和ResultSet!

DriverManger(驱动管理器)的作用有两个:

l  注册驱动:这可以让JDBC知道要使用的是哪个驱动;

l  获取Connection:如果可以获取到Connection,那么说明已经与数据库连接上了。

 

Connection对象表示连接,与数据库的通讯都是通过这个对象展开的:

l  Connection最为重要的一个方法就是用来获取Statement对象;

 

Statement是用来向数据库发送SQL语句的,这样数据库就会执行发送过来的SQL语句:

l  void executeUpdate(String sql):执行更新操作(insert、update、delete等);

l  ResultSet executeQuery(String sql):执行查询操作,数据库在执行查询后会把查询结果,查询结果就是ResultSet;

 

ResultSet对象表示查询结果集,只有在执行查询操作后才会有结果集的产生。结果集是一个二维的表格,有行有列。操作结果集要学习移动ResultSet内部的“行光标”,以及获取当前行上的每一列上的数据:

l  boolean next():使“行光标”移动到下一行,并返回移动后的行是否存在;

l  XXX getXXX(int col):获取当前行指定列上的值,参数就是列数,列数从1开始,而不是0。

Hello JDBC

 

下面开始编写第一个JDBC程序,这里以连接oracle数据库为案例;

Oracle数据库的驱动包

获取连接

获取连接需要两步,一是使用DriverManager来注册驱动,二是使用DriverManager来获取Connection对象。

1.      注册驱动

看清楚了,注册驱动就只有一句话:Class.forName("oracle.jdbc.driver.OracleDriver");,下面的内容都是对这句代码的解释。今后我们的代码中,与注册驱动相关的代码只有这一句。

DriverManager类的registerDriver()方法的参数是java.sql.Driver,但java.sql.Driver是一个接口,

 

package com.cloud.day1;

import java.sql.Connection;

import java.sql.DriverManager;

public class ConnectionJdbc {

   public static Connection getConnection() throws Exception{

      Class.forName("oracle.jdbc.driver.OracleDriver");

      String url = "jdbc:oracle:thin:@192.168.220.330:1521:test";

      return DriverManager.getConnection(url, "test", "test");

   }

}

 

2.      获取连接

获取连接的也只有一句代码:DriverManager.getConnection(url,username,password),其中username和password是登录数据库的用户名和密码.

url查对复杂一点,它是用来找到要连接数据库“网址”,就好比你要浏览器中查找百度时,也需要提供一个url。下面是oracle的url:

jdbc:oracle:thin:@192.168.220.330:1521:test

JDBC规定url的格式由三部分组成,每个部分中间使用逗号分隔。

l  第一部分是jdbc,这是固定的;

l  第二部分是数据库名称,那么连oracle数据库,第二部分当然是oracle了;

l  第三部分是由数据库厂商规定的

  

下面是获取连接的语句:

Connection con= DriverManager.getConnection(“jdbc:oracle:thin:@192.168.220.330:1521:test”,”test”,”test”);

 

还可以在url中提供参数:

jdbc:oracle:thin:@192.168.220.330:1521:test?useUnicode=true&characterEncoding=UTF8

useUnicode参数指定这个连接数据库的过程中,使用的字节集是Unicode字节集;

characherEncoding参数指定穿上连接数据库的过程中,使用的字节集编码为UTF-8编码。请注意,mysql中指定UTF-8编码是给出的是UTF8,而不是UTF-8。要小心了!

 

获取Statement

在得到Connectoin之后,说明已经与数据库连接上了,下面是通过Connection获取Statement对象的代码:

Statement stmt =con.createStatement();

Statement是用来向数据库发送要执行的SQL语句的!

发送SQL增、删、改语句

String sql = “insertinto user value(’zhangSan’, ’123’)”;

int m =stmt.executeUpdate(sql);

其中int类型的返回值表示执行这条SQL语句所影响的行数,我们知道,对insert来说,最后只能影响一行,而update和delete可能会影响0~n行。

如果SQL语句执行失败,那么executeUpdate()会抛出一个SQLException。

发送SQL查询语句

String sql = “select* from user”;

ResultSet rs =stmt.executeQuery(sql);

请注册,执行查询使用的不是executeUpdate()方法,而是executeQuery()方法。executeQuery()方法返回的是ResultSet,ResultSet封装了查询结果,我们称之为结果集。

读取结果集中的数据

ResultSet就是一张二维的表格,它内部有一个“行光标”,光标默认的位置在“第一行上方”,我们可以调用rs对象的next()方法把“行光标”向下移动一行,当第一次调用next()方法时,“行光标”就到了第一行记录的位置,这时就可以使用ResultSet提供的getXXX(intcol)方法来获取指定列的数据了:

rs.next();//光标移动到第一行

rs.getInt(1);//获取第一行第一列的数据

当你使用rs.getInt(1)方法时,你必须可以肯定第1列的数据类型就是int类型,如果你不能肯定,那么最好使用rs.getObject(1)。在ResultSet类中提供了一系列的getXXX()方法,比较常用的方法有:

ObjectgetObject(int col)

String getString(intcol)

int getInt(intcol)

doublegetDouble(int col)

关闭close()

与IO流一样,使用后的东西都需要关闭!关闭的顺序是先得到的后关闭,后得到的先关闭。

rs.close();

stmt.close();

con.close();

规范化代码

所谓规范化代码就是无论是否出现异常,都要关闭ResultSet、Statement,以及Connection,如果你还记得IO流的规范化代码,那么下面的代码你就明白什么意思了。

 

package com.cloud.day1;

import java.sql.Connection;

import java.sql.DriverManager;

//jdbc:oracle:thin:@192.168.150.237:1521:F1

public class ConnectionJdbc {

   public static Connection getConnection() throws Exception{

      Class.forName("oracle.jdbc.driver.OracleDriver");

      String url = "jdbc:oracle:thin:@192.168.220.330:1521:test";

      return DriverManager.getConnection(url, "app", "app");

   }

}

package com.cloud.day1;

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import org.junit.Test;

public class TestCon {

   @Test

   public void test1() throws Exception{

      Connection con = null;

      Statement stat = null;

      ResultSet result = null;

      try{

         con = ConnectionJdbc.getConnection();

         stat = con.createStatement();

         String sql = "select * from AP_MENU";

         result = stat.executeQuery(sql);

         while(result.next()){

            String u1 = result.getString(1);

            String u2 = result.getString(2);

            System.out.println("u1:"+u1+";u2:"+u2);

         }

      }catch(Exception e){

         throw new RuntimeException();

      }finally{

         try{

            //先打开后关闭原则

            if(result!=null) result.close();

            if(stat!=null) stat.cancel();

            if(con!=null) con.close();

         }catch (SQLException e) {

            e.printStackTrace();

         }

      }

   }

}

【JAVA高级】——初识JDBC中Service业务逻辑层 初识JDBC中Service业务逻辑层 阅读详情

相关推荐

大数据必学Java基础(九十二):JDBC初识

jar--META-INF--services--java.sql.Driver--com.mysql.jdbc.Driver,在加载jar包时,会自动读取该内容并加载驱动,所以我们不去编写Class.forName("com.mysql.jdbc.Driver"),程序也是可以自动完成加载驱动的。所以我们在代码中直接使用反射,通过Class.forName("com.mysql.jdbc.Driver"),加载该类进入内存即可。加载数据库驱动时,我们可以通过自己创建一个实例的方式,然后去注册驱动。

Lansonli(蓝深李)的博客 1247

JDBC入门

1、表示数据库结果集的数据表,通常通过执行查询数据库的语句生成2.ResultSet对象保持一个光标指向其当前的数据行。最初,光标位于第一行之前3.next方法将光标移动到下一行,并且由于在ResultSet对象中没有更多行时返回false,因此可以在while循环中使用循环来遍历结果集1.Statement对象 用于执行静态SQL语句并返回其生成的结果的对象2.在连接建立后,需要对数据库进行访问,执行 命名或是SQL语句,可以通过Statement [存在SQL注入]

weixin_52314000的博客 1004

RingBuffer 环形缓冲区----镜像指示位

称作环形缓冲区,也称作环形队列(circular queue),是一种用于表示一个固定尺寸、头尾相连的缓冲区的数据结构,适合缓存数据流。这个宏定义用于计算向下对齐的地址。size和align。size是要对齐的内存大小,align是所需的对齐大小。这个宏返回一个值,该值是size向下对齐到align边界后的地址。例如,假设我们有一个 32 位的系统,并且我们需要将数据对齐到 64 位的边界。我们可以使用在这个例子中,data数组的大小为 10 个元素,我们需要将其对齐到 8 字节边界。宏返回data。

呵呵哒!的博客 2408

JDBC 入门

Java 数据库连接 (JDBC) 是一个标准 SQL(Structured Query Language,结构化查询语言)数据库访问接口, 可以为多种关系数据库提供统一访问。JDBC(Java DataBase Connection,Java 数据库连接)也提供一种基准,据此可以构建更高级的工具和接口。 目前的 JDK(Java Development Kit,Java 开发工具包)软件捆绑包

zaowei21的专栏 792

XTDrone平台FAST-LIO2与ego-planner结合路径规划部署

之前做了XTDrone平台FAST-LIO2的部署现在将其结合ego-planner进行导航规划,之前查看教程是使用视觉进行定位导航的,现在重新学习。修改advanced_param_xtdrone.xml,这里有视觉信息,不修改会报错显示为输入视觉话题信息。怎么描述 ,感觉当时觉得很难的问题突然就给解决了,一顿复杂,最近勤更新吧,继续开始学习。还有一个想法就是两个rviz结合在一起启动,写了一个demo,融合的不太好感觉额。改为只使用雷达点云,这里仿真的话题是/scan。

m0_56093217的博客 1080

特征图与token的区别以及两者之间的转换

特征图和token之间的联系以及两者之间的转换

mariodf的博客 1012

JDBC最详讲解(快速入门)

作者简介:大家好我是小唐同学(๑>؂

&volume的博客 2089

Deepseek+Word插件:一键搞定论文翻译与润色的学术写作新革命

本文介绍了Deepseek Word插件如何革新学术写作流程,实现论文翻译与润色的一键操作。该插件深度集成于Word环境,能智能完成中英互译、语法修正、术语统一及逻辑优化,显著提升写作效率与文本质量,是研究者的高效AI助手。

weixin_29252171的博客 511

Java JDBC篇1——初识JDBC

Java JDBC篇1——初识JDBC Java DataBase Connectivity Java 数据库连接(Java语言操作数据库) 1、什么是JDBC 其实是官方定义的一套操作所有关系型数据库的规则(接口),各个数据库厂商去实现这套接口,提供数据库驱动jar包,我们使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类 2、MySql驱动包 官网地址 https://mvnrepository.com/artifact/mysql/mysql-connector-java mysq

qq_43842093的博客 441

Word公式一键转MathType保姆级教程(附omml2mml.xsl报错终极解决方案)

本文提供Word公式一键转MathType的保姆级教程,重点解决常见的omml2mml.xsl报错问题。通过详细分析报错原因、官方解决方案实操步骤及转换后格式优化技巧,帮助用户高效完成公式转换,适用于科研论文和商业文档编辑。

weixin_30082367的博客 554

Android一个APP里面最少有几个线程

Android应用启动时,默认会创建一个进程,该进程中最少包含负责处理用户交互、UI更新等核心操作,所有与界面相关的逻辑必须在此线程执行。若在此线程执行耗时操作(如网络请求),会导致界面卡顿甚至触发ANR(应用无响应)。当对象重写了finalize()方法时,该线程负责将这些对象放入队列并调用其finalize()方法,完成资源释放后再由GC回收。监控的执行效率。如果finalize()方法执行超时(默认10秒),此线程会触发虚拟机退出以防止应用长时间阻塞。

编程进化论 613

【Java】初识JDBC

本文主要讲了应用程序使用JDBC访问数据库的方式,JDBC的4种驱动程序

2301_80760873的博客 682

【AI应用实战-claude】在飞书上接入claudecode进行远程使用(十三)

本文介绍了三种将ClaudeCode接入飞书的方案,包括官方飞书CLI工具(推荐)、cc-connect中转工具和MCP协议集成。官方飞书CLI适合自动化办公场景,通过简单配置即可实现消息发送和文档管理;cc-connect适用于远程调用Claude功能,通过飞书群聊触发响应;MCP协议则适合开发者构建复杂工作流。文章提供了详细的操作步骤,并针对不同使用场景给出了选择建议。

1013

初识Java的JDBC编程

Java的JDBC编程 JDBC,即Java Database Connectivity,java数据库连接。是一种用于执行SQL语句的Java API,它是Java中的数据库连接规范。这个API由java.sql.,javax.sql. 包中的一些类和接口组成,它为Java开发人员操作数据库提供了一个标准的API,可以为多种关系数据库提供统一访问。 1.JDBC工作原理 JDBC访问数据库层次结构: JDBC优势 Java语言访问数据库操作完全面向抽象接口编程; 开发数据库应用不用限定在特定数

元宝的博客 316

【系统分析师】2025年下半年真题:论文及解题思路

摘要 本文探讨软件测试技术的应用,重点关注静态测试与动态测试的比较。静态测试在不运行程序的情况下,通过审查、走查等方式分析需求、设计文档和代码,能早期发现高层次缺陷,降低修复成本。动态测试通过实际运行程序,使用单元测试、集成测试等方法验证功能性能,是发现运行时错误的唯一途径。二者在缺陷类型、介入阶段和修复成本上具有互补性,建议项目实践中结合使用以提升软件质量。

数据知道的博客 5787

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

初识java-JDBC

JDBC一、前言二、通过JAVA操作MySQL1.先得到MySQL的API2.操作MySQL总结 一、前言 在日常生活中一般使用代码来操作数据库,MySQL会给主流的语言提供各种API(现成的函数/类),MySQL是由C/C++实现的,其他语言要操作数据库就要间接访问,数据库服务器是本体,通过代码写的程序,调用MySQL的API实现的是一个客户端,相当于服务器提供的客户端。即就要按照MySQL服务器的要求,构造出响应的网络请求就行了。 通过代码访问MySQL就是实现一个MySQL客户端(只要能按照人家My

weixin_51601437的博客 240

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

初识Java中的JDBC

JAVA中的JDBC JDBC 概念: Java DataBase Connectivity (java数据库链接),java语言操作数据库 本质:其实就是官方(sun公司)定义的一套操作所有操作关系型数据库的规则(接口),由各个数据库厂商去实现这套接口,提供jar包,我们可以使用这套(jdbc)接口进行编程,真正实行代码的是驱动jar包中的实现类 快速入门 步骤 导入驱动j...

a2209963的博客 186

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Java Database Connectivity——1. 初识JDBC

hi,大家好,本来讲完这个MySQL就应该讲述这个JDBC了,奈何忘记了,直接开HTML了,所以大家多担待。 我们学Java,学习数据库,就是为了通过Java去操作数据库,因为数据库不能暴露给我们的客户,万一有啥不能让客户去操作的,而客户缺操作了,那么这个损失就大了,而且还有一点啊,不是所有的人都会写SQL的,所以我们希望我们通过后端语言进行连接数据库,然后用户通过页面或者桌面的一些工具进行操作,而具体能操作什么由我们来定(其实是由业务决定),防止用的人乱用。这里我们就需要说一个最重要的东西,那就是JDB

胖子胖子大胖子的博客 1224

初识java-JDBC,美团java面试流程

我们总是喜欢瞻仰大厂的大神们,但实际上大神也不过凡人,与菜鸟程序员相比,也就多花了几分心思,如果你再不努力,差距也只会越来越大。面试题多多少少对于你接下来所要做的事肯定有点帮助,但我更希望你能透过面试题去总结自己的不足,以提高自己核心技术竞争力。每一次面试经历都是对你技术的扫盲,面试后的复盘总结效果是极好的!序员相比,也就多花了几分心思,如果你再不努力,差距也只会越来越大。面试题多多少少对于你接下来所要做的事肯定有点帮助,但我更希望你能透过面试题去总结自己的不足,以提高自己核心技术竞争力。

m0_60707660的博客 924

java-初识Servlet,Tomcat,JDBC

java入门须知的重要概念/名词/技术 等我们在此文章知道了servlet 是基于Java语言编写的服务器端程序,可以处理Web容器(如Tomcat)发送过来的HTTP请求,也写了实例代码,另外servlet的过滤器,可以用来处理请求前与请求后的一些逻辑。;接着简单了介绍了tomcat,知道Tomcat 作为一个 Web 服务器,可以通过 Servlet 容器来管理和运行 Servlet;最后介绍jdbc,以及jdbc连接数据库的实例代码。

Bruce__taotao的博客 971

Java遇上数据库:初识JDBC

工具:MySql, MyEclipse and navicat; 【问题描述】 我们现在需要完成一个目标,即在java程序中对指定数据库进行增删改查。 【分析】 这里我们利用JDBC技术。JDBC可以形象的比喻成一座桥,一座连接Java程序和数据库的桥。 完成MySql和navicat的互联之后 在navicat中我已经创建好了如下的表,创表步骤参考:https://jingyan.baidu.c...

AAS48的博客 256

java学习笔记之初识JDBC

初识JDBC 一.JDBC概念   jdbc 英文全称:java database connectivity ,是java访问数据库的一套规范,通俗可以理解为,java为连接数据库提供的一套类和接口   jdbc与数据库驱动的关系图:    二.jdbc简单使用   使用流程:(在使用之前需要将驱动的jar导入进去)     ①:注册驱动     ②:连接数据库 ...

weixin_30650859的博客 97

WAMP初识,JAVA JDBC连接WAMP的MYSQL数据库

##WAMP初识,JAVA JDBC连接WAMP的MYSQL数据库## **介绍:** Windows下的Apache+Mysql/MariaDB+Perl/PHP/Python,一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。 首先本博客是我自己想用java连接数据

潇风寒月 5195
上一篇: Java中IO流的File类
下一篇: SpringMvc注解方式开发入门
午-夜
博客等级 码龄12年 95粉丝 133原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值