JDBC的概述「建议收藏」

JDBC的概述「建议收藏」————————————————–JDBC的概述————————————————————1    JDBC概述1 什么是JDBC  JDBC(JavaDataBaseConnectivity)就是Java数据库连接,说白了就是用Java语言来操作数据库…

大家好,又见面了,我是你们的朋友全栈君。

————————————————–JDBC的概述————————————————————

1    JDBC概述

1 什么是JDBC

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

2 JDBC原理

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

JDBC的概述「建议收藏」

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

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

 

2 JDBC接口、类介绍

 

1 JDBC中的主要类(接口)

在JDBC中常用的类有:

l  DriverManager – 类,用来获取Connection;

l  Connection – 接口;

l  Statement – 接口;

l  ResultSet – 接口。

JDBC的概述「建议收藏」

2 DriverManager

其实我们今后只需要会用DriverManager的getConnection()方法即可:

1.    Class.forName(“oracle.jdbc.OracleDriver”);//注册驱动

2.    String url = “jdbc:oracle:thin:@127.0.0.1:1521:orcl”;

3.    String username = “scott”;

4.    String password = “tiger”;

5.    Connection con =DriverManager.getConnection(url, username, password);

 

注意,上面代码可能出现的两种异常:

1.    ClassNotFoundException:这个异常是在第1句上出现的,出现这个异常有两个可能:

l  你没有给出oracle的jar包;

l  你把类名称打错了,查看类名是不是oracle.jdbc.OracleDriver。

 

2.    SQLException:这个异常出现在第5句,出现这个异常就是三个参数的问题,往往username和password一般不是出错,所以需要认真查看url是否打错。

 

对于DriverManager.registerDriver()方法了解即可,因为我们今后注册驱动只会Class.forName(),而不会使用这个方法。

 

3 Connection

Connection最为重要的方法就是获取Statement:

l  Statement stmt = con.createStatement();

 

后面在学习ResultSet方法时,还要学习一下下面的方法:

l  Statement stmt = con.createStatement(int,int);

 

4 Statement

Statement最为重要的方法是:

l  int executeUpdate(String sql):执行更新操作,即执行insert、update、delete语句,其实这个方法也可以执行create table、alter table,以及drop table等语句,但我们很少会使用JDBC来执行这些语句;

l  ResultSet executeQuery(String sql):执行查询操作,执行查询操作会返回ResultSet,即结果集。

 

  boolean execute()

Statement还有一个boolean execute()方法,这个方法可以用来执行增、删、改、查所有SQL语句。该方法返回的是boolean类型,表示SQL语句是否执行成功。

如果使用execute()方法执行的是更新语句,那么还要调用int getUpdateCount()来获取insert、update、delete语句所影响的行数。

如果使用execute()方法执行的是查询语句,那么还要调用ResultSet getResultSet()来获取select语句的查询结果。

 

 

5 ResultSet之获取列数据

可以通过next()方法使ResultSet的游标向下移动,当游标移动到你需要的行时,就需要来获取该行的数据了,ResultSet提供了一系列的获取列数据的方法:

l  String getString(int columnIndex):获取指定列的String类型数据;

l  int getInt(int columnIndex):获取指定列的int类型数据;

l  double getDouble(int columnIndex):获取指定列的double类型数据;

l  Object getObject(int columnIndex):获取指定列的Object类型的数据。

 

上面方法中,参数columnIndex表示列的索引,列索引从1开始,而不是0,这第一点与数组不同。如果你清楚当前列的数据类型,那么可以使用getInt()之类的方法来获取,如果你不清楚列的类型,那么你应该使用getObject()方法来获取。

ResultSet还提供了一套通过列名称来获取列数据的方法:

l  String getString(String columnName):获取名称为columnName的列的String数据;

l  int getInt(String columnName):获取名称为columnName的列的int数据;

l  double getDouble(String columnName):获取名称为columnName的列的double数据;

l  Object getObject(String columnName):获取名称为columnName的列的Object数据;

——————————————————————————————————————

结果集的列数

ResultSet rs =stm.executeQuery(sql);

ResultSetMetaData rsmd =rs.getMetaData();

int count = rsmd.getColumnCount();

获取行数 只能通过滚动 resultset

ResultSet rs = stm.executeQuery(sql);

rs.last();

int row = rs.getRow();

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/152260.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • poe交换机的供电方式_交换机需要电源吗

    poe交换机的供电方式_交换机需要电源吗前言:近年来,PoE供电技术的发展势头越来越强劲。凭借简化用电设备的安装和部署、节能,安全等一系列优势,PoE供电成为无线覆盖、安防监控、以及智能电网等场景的新宠。在技术交流中,工程商困惑最多的其中就有POE供电的问题,本文就汇总了大家最关注的问题,集中解答。 ▶ 问题一:何为PoE技术? PoE(PowerOverEthernet)指的是在现有的以太网Cat.5布线基础…

    2022年9月28日
    0
  • nginx配置负载均衡,tomcat宕机响应缓慢,自动切换的问题

    nginx配置负载均衡,tomcat宕机响应缓慢,自动切换的问题用了nginx负载均衡后,在两台tomcat正常运行的情况下,访问http://localhost速度非常迅速,通过测试程序也可以看出是得到的负载均衡的效果,但是我们试验性的把其中一台tomcat(serverlocalhost:8080)关闭后,再查看http://localhost,发现反应呈现了一半反映时间快,一半反映时间非常非常慢的情况,但是最后都能得到正确结果。解决办法:问题解决,主要是proxy_connect_timeout这个参数,…

    2022年7月23日
    10
  • 17个最佳WordPress画廊插件[通俗易懂]

    17个最佳WordPress画廊插件[通俗易懂]驯服混乱并改变您的内容。如果您想展示您的内容(帖子,图像,视频,音频文件以及您能想到的任何其他内容),从而为网站访问者带来引人入胜的体验,那么本文将帮助您做到这一点。在这里,我们重点介绍CodeCanyon上可用的一些最佳WordPress画廊插件。我们已按画廊类型对其进行了细分,因此请继续阅读以了解更多有关为什么这些是用于视频和多媒体,图像和WordPress网格的最佳WordPr…

    2022年5月28日
    112
  • Burpsuite教程(一)Burpsuite 火狐谷歌浏览器抓包教程

    Burpsuite教程(一)Burpsuite 火狐谷歌浏览器抓包教程1.1Web抓包火狐抓包环境需求:火狐浏览器代理插件1.打开测试工具BurpSuite,默认工具拦截功能是开启的,颜色较深,我们点击取消拦截。下图取消拦截状态,数据包可以自由通过:2.按下图顺序点击选显卡来到代理设置3.可以看到默认的代理设置情况,本地代理地址:127.0.0.1,代理端口8080。如果前面没有勾选一定要选择勾选。工具代理设置完毕。4.证书安装,浏览器输输入http://burp/,点击图示位置下载证书5配置证书,打开浏览器并导入证书火狐浏览器开打开证

    2022年5月4日
    751
  • C#导入Excel数据的方式(两种)

    C#导入Excel数据的方式(两种)方式一、导入数据到数据集对象,只支持Excel的标准格式,即不能合并单元格等等///<summary>///导入数据到数据集中///备注:此种方法只支持excel原文件///

    2022年7月2日
    17
  • 毫无头绪的自学Python,你可能连门槛都摸不到![通俗易懂]

    毫无头绪的自学Python,你可能连门槛都摸不到![通俗易懂]目前的IT行业发展日趋迅猛,IT产业的产值成倍增长,不少人都打算从零基础开始学习python。对于零基础的初学者来说,最迷茫的是不知道怎样开始学习?那这里小编为大家规划了一条零基础自学必看pyth

    2022年7月3日
    22

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号