Java中JDBC常见对象

关系型数据库(九)JDBC 在开发中我们使用的是JAVA,那么势必要通过java语言操作数据库中的数据。这节课要学的就是如何使用java去操作数据库扩展JDBC 就是使用Java语言操作关系型数据库的一套API,是Java语言为了屏蔽具体的具体的数据库操作的细节不同提供的一个框架 全称:( Java DataBase Connectivity ) Java 数据库连接。 阅读详情

JDBC对象介绍

JDBC中的主要类(接口)

在JDBC中常用的类有:

l  DriverManager;

l  Connection;

l  Statement;

l  ResultSet。

DriverManager

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

1.       Class.forName(“com.mysql.jdbc.Driver”);//注册驱动

2.       String url = “jdbc:mysql://localhost:3306/mydb1”;

3.       String username = “root”;

4.       String password = “123”;

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


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

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

l  你没有给出mysql的jar包;

l  你把类名称打错了,查看类名是不是com.mysql.jdbc.Driver。


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

Connection

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

l  Statement stmt = con.createStatement();


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

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

Statement

Statement最为重要的方法是:

l  int executeUpdate(String sql):执行更新操作,即执行insert、update、delete语句,其实这个方法也可以执行createtable、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语句的查询结果。


ResultSet结果集

下一行:默认只能使用它,其他的方法存在,但不能使用!默认的结果集不可滚动!

ResultSet表示结果集,它是一个二维的表格!ResultSet内部维护一个行光标(游标),ResultSet提供了一系列的方法来移动游标:

l  void beforeFirst():把光标放到第一行的前面,这也是光标默认的位置;

l  void afterLast():把光标放到最后一行的后面;

l  boolean first():把光标放到第一行的位置上,返回值表示调控光标是否成功;

l  boolean last():把光标放到最后一行的位置上;


l  boolean isBeforeFirst():当前光标位置是否在第一行前面;

l  boolean isAfterLast():当前光标位置是否在最后一行的后面;

l  boolean isFirst():当前光标位置是否在第一行上;

l  boolean isLast():当前光标位置是否在最后一行上;


l  boolean previous():把光标向上挪一行;

l  boolean next():把光标向下挪一行;

l  boolean relative(int row):相对位移,当row为正数时,表示向下移动row行,为负数时表示向上移动row行;

l  boolean absolute(int row):绝对位移,把光标移动到指定的行上;

l  int getRow():返回当前光标所有行。


获取结果集元数据!

得到元数据:rs.getMetaData(),返回值为ResultSetMetaData

获取结果集列数:intgetColumnCount()

获取指定列的列名:StringgetColumnName(int colIndex)


结果集特性:当使用ConnectioncreateStatement时,已经确定了Statement生成的结果集是什么特性。

是否可滚动

是否敏感

是否可更新


con.createSttement():生成的结果集:不滚动、不敏感、不可更新!

con.createStatement(int,int)

第一个参数:

l  ResultSet.TYPE_FORWARD_ONLY:不滚动结果集;

l  ResultSet.TYPE_SCROLL_INSENSITIVE:滚动结果集,但结果集数据不会再跟随数据库而变化;

l  ResultSet.TYPE_SCROLL_SENSITIVE:滚动结果集,但结果集数据不会再跟随数据库而变化;

第二个参数:

CONCUR_READ_ONLY:结果集是只读的,不能通过修改结果集而反向影响数据库;

l  CONCUR_UPDATABLE:结果集是可更新的,对结果集的更新可以反向影响数据库。


上面方法分为两类,一类用来判断游标位置的,另一类是用来移动游标的。如果结果集是不可滚动的,那么只能使用next()方法来移动游标,而beforeFirst()、afterLast()、first()、last()、previous()、relative()方法都不能使用!!!

结果集是否支持滚动,要从Connection类的createStatement()方法说起。也就是说创建的Statement决定了使用Statement创建的ResultSet是否支持滚动。

StatementcreateStatement(int resultSetType, int resultSetConcurrency)

resultSetType的可选值:

l  ResultSet.TYPE_FORWARD_ONLY:不滚动结果集;

l  ResultSet.TYPE_SCROLL_INSENSITIVE:滚动结果集,但结果集数据不会再跟随数据库而变化;

l  ResultSet.TYPE_SCROLL_SENSITIVE:滚动结果集,但结果集数据不会再跟随数据库而变化;


可以看出,如果想使用滚动的结果集,我们应该选择TYPE_SCROLL_INSENSITIVE!其实很少有数据库驱动会支持TYPE_SCROLL_SENSITIVE的特性!通常我们也不需要查询到的结果集再受到数据库变化的影响。


resultSetConcurrency的可选值:

CONCUR_READ_ONLY:结果集是只读的,不能通过修改结果集而反向影响数据库;

l  CONCUR_UPDATABLE:结果集是可更新的,对结果集的更新可以反向影响数据库。


通常可更新结果集这一“高级特性”我们也是不需要的!


获取滚动结果集的代码如下:

Connection con = …

Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,CONCUR_READ_ONLY);

String sql = …//查询语句

ResultSet rs = stmt.executeQuery(sql);//这个结果集是可滚动的


ResultSet之获取列数据

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

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

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

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

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

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  boolean getBoolean(String columnName):获取名称为columnName的列的boolean数据;

Object getObject(String columnName):获取名称为columnName的列的Object数据;
Java程序设计:Java数据访问对象JDBC JavaJDBC 阅读详情

相关推荐

激光定位算法竞技场:hdl_localization与Cartographer/AMCL的横向技术解剖

本文深入对比了hdl_localization、Cartographer和AMCL三种激光定位算法的技术原理与性能表现。通过UKF-NDT融合、图优化和粒子滤波等核心技术,分析了各算法在结构化环境、动态环境和大尺度场景下的适应性。实验数据表明,Cartographer在全局一致性上表现最优,而AMCL在动态环境中更具鲁棒性。文章还提供了算法选型指南和参数调优技巧,为工程实践提供参考。

weixin_29062865的博客 327

详解JDBC各个对象

JDBC 各个对象详解 DriverManager: 驱动器管理对象 Connection:数据库连接对象 Statement:执行SQL语句对象 PreparedStatement:执行SQL语句对象,并防止SQL注入,ResultSet:结果集对象JDBC控制事务,SQL注入错误演示

小白白O快起来 1118

推荐系统[九]项目技术细节讲解z2:搜索Query理解[Term Weight、Query 改写、同义词扩写]和语义召回技术

在 pooling 方法上,我们也尝试过不同层 pooling,或者在多层上增加 attention 聚合 BERT 多层结果,效果和最后一层所有 token 做 average pooling 相当。损失函数方面,在排序阶段使用pairwise比 pointwise 损失函数的效果会更好。

丨汀、的博客 1081

MySQL数据库——JDBC五个对象详解(Java

jdbc的5个常用对象详解!

雷东宸的博客 3435

JDBC知识详解

jdbc入门详解

qq_67124455的博客 430

java jdbc 注解_使用注解将JDBC结果集映射到Java对象

http://www.codeproject.com/Tips/372152/Mapping-JDBC-ResultSet-to-Object-using-Annotations1.[代码]SamplePojo.javaimport javax.persistence.Column;import javax.persistence.Entity;@Entitypublic class Sample...

weixin_39999222的博客 158

Java JDBC入门之五:以面向对象的思想编写JDBC程序

Java JDBC入门之五:以面向对象的思想编写JDBC程序一、 思想二、代码 一、 思想 传入一个对象的形式去执行插入,现在使用的是拼接SQL字符串的方法,后面改进,使用占位符的方法。 通过拼接SQL去查询信息 二、代码 测试代码 public class JDBCTest { @Test public void testGetStudent() { //1. 得到查询的类...

码农回顾 471

javajdbc编程_Java - 面向对象思想进行JDBC编程

mysql-connector-java-5.1.7-bin.jarjdbc.propertiesdriver=com.mysql.jdbc.DriverjdbcUrl=jdbc\:mysql\://localhost\:3306/lessonuser=rootpassword=JDBCTools.javapackage 面向对象思想进行JDBC编程;import java.io.IOExcept...

weixin_32424555的博客 145

java resultset jdbc_[JDBC] 处理ResultSet,构建Java对象

背景最近在学习Mybatis,Mybatis在处理JDBC返回值与Java业务对象之间的转换非常方便,定义XML,标明互相之间的转换关系,即可轻松完成转换。Mybatis是JDBC的封装,我们先来看看如果用原生的JDBC,如何完成ResultSet和Java业务对象之间的转换,会遇到哪些不便。示例代码Java业务POCityPO,包含三个字段 id,cityId,cityName。我们会写使用原生...

weixin_34099891的博客 337

Java JDBC实现过程及各个对象详解

1. JDBC的实现过程 //(1)导入驱动包 //(2)注册驱动 Class.forName("com.mysql.jdbc.Driver");//加载MySQL数据库的驱动 //(3)获取数据库连接对象 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/数据库名称","数据库用户名","密码"); //(4)定义sql语句 String sql = "update 数据表 set 字段名 = '值'

夏沐的博客 428

java JDBC insert查询返回List对象

一,封装对象 package JDBC; public class student { private int id; private String name; private String gender; private int age; private String address; private String qq; private String email; private String username; priva

weixin_56211720的博客 2703

JavaJDBC查询结果集封装到对象

有任何问题加群讨论,还可以领取精美学习资料噢~ 群号:733899823 加群时请备注CSDN~ 工程目录结构如下: User类: package com.xiao.pojo; /** * @author 笑笑 * @Date 2018年3月15日上午9:20:28 * */ public class User { private int uid = 0; ...

笑笑是一个码农 1万+

Java对象来表达JDBC操作

11.4. 用Java对象来表达JDBC操作 - Spring Framework reference 2.0.5 参考手册中文版11.4. 用Java对象来表达JDBC操作org.springframework.jdbc.object包下的类允许用户以更加 面向对象的方式去访问数据库。比如说,用户可以执行查询并返回一个list, 该list作为一个结果集将把从

鸟儿飞的专栏 1097

JDBC中用到的5个对象详解

1.DriverManager:驱动管理对象 功能: 注册驱动:告诉程序使用哪一个jar包 方法:static void registerDriver(Driver driver) 注册与给定的驱动程序DriverManager 写代码时使用:Class.forName(“com.mysql.cj.jdbc.Driver”); 2.获取数据库连接: 2.1 方法:static Connection getConnection(String url,String user, String password)

yangkkkkaaad的博客 1060

JDBC中常用对象介绍

JDBC常用对象的介绍

冷血之心的博客 5845

JavaJDBC

java数据库连接,是一种用于执行SQL语句的java API,可以为多种关系型数据库提供统一访问,它由一组用Java语言编写的类和接口组成。Java API:供程序调用的接口类,集成在java.sql包中DriverManager类作用:管理各种不同的jDBC驱动Connection 接口 与特定数据库的连接Statement 接口 执行sqlPreparedStatement接口 执行sqlResultSet接口 接收查询结果。

zl_nian的博客 4139

JAVAJDBC

JDBC学习笔记

qq_44708895的博客 5050

Java-JDBC

1)JDBC为访问不同的数据库提供了统一的接口;2)Java程序员使用JDBC,可以连接任何提供了JDBC驱动程序的数据库,从而完成对数据库的各种操作;3)JDBC基本原理:Java程序提供接口规范,让不同数据库实现,在Java程序中统计调用接口的方法即可4)模拟JDBC实现:创建数据库连接接口(Interface)→数据库实现接口创建操作方法→创建实现对象赋给接口引用,通过接口实现对象完成对数据库的操作。

Ego_Ekko的博客 2797

数据库连接池概述

数据库连接池概述: http://hi.baidu.com/lyt1724/blog/item/bc4c12d593e73ac450da4b26.html/cmtid/239b9eddf642c93b5982ddaa s-}...

cptbtptp88124的博客 330

上市公司-全要素生产率1999-2024年.xlsx

数据名称:上市公司全要素生产率+dofile5种测算数据范围:上市公司时间范围:1999-2024年有效样本:59722条数据来源:上市公司年报数据整理:内含原始数据、测算结果和dofile更新时间:2025年5月更多说明:含OLS、FE、LP、OP、GMM 5种TFP测算方法

上一篇: Java中字节流和异常处理
下一篇: Java中字符流
午-夜
博客等级 码龄12年 95粉丝 133原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值