02、JDBC查询
① 向数据库发送SQL查询语句
首先使用Statement声明一个SQL语句对象,然后让已创建的连接对象con调用方法createStatement()创建SQL语句对象。
|
Statement sql = con.createStatement(); |
|
Connection con = null; String DBname = "jdb"; //数据库名字 String url = "jdbc:mysql://localhost:3306/"+DBname+"?useSSL=true&characterEncoding=utf-8"; String username = "root";//数据库账号 String password = "root";//数据库密码 Statement sql = null; try { Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection(url, username, password);//连接代码 sql = con.createStatement(); } catch (Exception e) { // TODO: handle exception System.out.println(e); } |
② 处理查询结果
有了SQL语句对象后,可以调用相应的方法实现对数据库中表的查询和修改,并将结果放在一个ResultSet类声明的对象中。换句话说,SQL查询语句对数据库的查询操作将返回一个ResultSet对象,ResultSet对象由按"列"(字段)组织的数据行构成。
|
ResultSet rs = sql.executeQuery("SELECT * FROM students");//查询student表中的数据 |
|
Connection con = null; String DBname = "jdb"; //数据库名字 String url = "jdbc:mysql://localhost:3306/"+DBname+"?useSSL=true&characterEncoding=utf-8"; String username = "root";//数据库账号 String password = "root";//数据库密码 Statement sql = null; ResultSet rs = null; try { Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection(url, username, password);//连接代码 sql = con.createStatement(); rs = sql.executeQuery("SELECT * FROM students");//查询student表中的数据 } catch (Exception e) { // TODO: handle exception System.out.println(e); } |
ResultSet对象的方法
|
NO. |
方法名称 |
类型 |
描述 |
|
01 |
public boolean next()throws SQLException |
普通 |
将光标从当前位置向前移一行 |
|
02 |
public byte getByte(int columnIndex)throws SQLException |
普通 |
以byte的形式获取当前行中指定列的值 |
|
03 |
public Date getDate(int columnIndex)throws SQLException |
普通 |
以java.sql.Date对象的形式获取当前行中指定列的值 |
|
04 |
public double getDouble(int columnIndex)throws SQLException |
普通 |
以double的形式获取此 当前行中指定列的值 |
|
05 |
public float getFloat(int columnIndex)throws SQLException |
普通 |
以float的形式获取当前行中指定列的值 |
|
06 |
public int getInt(int columnIndex)throws SQLException |
普通 |
以int的形式获取当前行中指定列的值 |
|
07 |
public long getLong(int columnIndex)throws SQLException |
普通 |
以long的形式获取当前行中指定列的值 |
|
08 |
public String getString(int columnIndex)throws SQLException |
普通 |
以String的形式获取当前行中指定列的值 |
|
09 |
public byte getByte(String columnName)throws SQLException |
普通 |
以byte的形式获取当前行中指定列的值 |
|
10 |
public Date getDate(String columnName)throws SQLException |
普通 |
以java.sql.Date对象的形式获取当前行中指定列的值 |
|
11 |
public double getDouble(String columnName)throws SQLException |
普通 |
以double的形式获取此 当前行中指定列的值 |
|
12 |
public float getFloat(String columnName)throws SQLException |
普通 |
以float的形式获取当前行中指定列的值 |
|
13 |
public int getInt(String columnName)throws SQLException |
普通 |
以int的形式获取当前行中指定列的值 |
|
14 |
public long getLong(String columnName)throws SQLException |
普通 |
以long的形式获取当前行中指定列的值 |
|
15 |
public String getString(String columnName)throws SQLException |
普通 |
以String的形式获取当前行中指定列的值 |
说明:
无论字段是何种属性;都可以使用getString方法返回字段值的串表示
③ 关闭连接
|
con.close(); |
注:使用ResultSet对象中的数据时,必须始终保持数据库的连接,直到应用程序将ResultSet对象中的数据查看完毕。如果在rs之后立即关闭连接,那么程序将无法获取rs中的数据。
范例:控制statement对象游标
方法:public Statement createStatement(int resultSetType,int resultSetConcurrency) throws SQLException
|
//获取Statement对象 Statement stmt = con.createStatement(int type,int concurrency); //返回结果集 ResultSet rs = stmt.executeQuery(SQL语句); resultSetType - 结果集类型, resultSetType:ResultSet.TYPE_FORWARD_ONLY、ResultSet.TYPE_SCROLL_INSENSITIVE 或 ResultSet.TYPE_SCROLL_SENSITIVE resultSetConcurrency:ResultSet.CONCUR_READ_ONLY 或 ResultSet.CONCUR_UPDATABLE |
ResulSet常用方法
|
NO. |
方法名称 |
类型 |
描述 |
|
01 |
public void beforeFirst()throws SQLException |
普通 |
将光标移动到开头,位于第一行之前 |
|
02 |
public void afterLast()throws SQLException |
普通 |
将光标移动到末尾,位于最后一行之后 |
|
03 |
public boolean first()throws SQLException |
普通 |
将光标移动到第一行 |
|
04 |
public boolean last()throws SQLException |
普通 |
将光标移动到最后一行 |
|
05 |
public boolean isBeforeFirst()throws SQLException |
普通 |
获取光标是否位于第一行之前 |
|
06 |
public boolean isAfterLast()throws SQLException |
普通 |
获取光标是否位于最后一行之后 |
|
07 |
public boolean isFirst()throws SQLException |
普通 |
获取光标是否位于第一行 |
|
08 |
public boolean isLast()throws SQLException |
普通 |
获取光标是否位于最后一行。调用 isLast 方法可能开销很大 |
|
09 |
public int getRow()throws SQLException |
普通 |
获取当前行编号 |
|
10 |
public boolean absolute(int row)throws SQLException |
普通 |
将光标移动到此 ResultSet 对象的给定行编号 |
注:如果row取负值,就是倒数的行数,absolute(-1)表示移到最后一行,absolute(-2)表示倒数第二行。
02、JDBC查询的更多相关文章
- Java 通过JDBC查询数据库表结构(字段名称,类型,长度等)
Java 通过JDBC查询数据库表结构(字段名称,类型,长度等) 发布者:唛唛家的豆子 时间:2012-11-20 17:54:02 Java 通过JDBC查询数据库表结构(字段名称,类型,长 ...
- spring jdbc 查询结果返回对象、对象列表
首先,需要了解spring jdbc查询时,有三种回调方式来处理查询的结果集.可以参考 使用spring的JdbcTemplate进行查询的三种回调方式的比较,写得还不错. 1.返回对象(queryF ...
- 【T-SQL基础】02.联接查询
概述: 本系列[T-SQL基础]主要是针对T-SQL基础的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础]02.联接查询 [T-SQL基础]03.子查询 [T-SQL基础 ...
- 用JDBC查询数据库
JDBC API的核心组件:1.DriverManager类:用语跟踪可用的JDBC驱动程序并产生数据库连接. 2.Connection接口:用于取得数据库信息.生成数据库语句,并管理数据库事务. 3 ...
- Redis查询&JDBC查询&Hibernate查询方式的效率比较...
比较三种查询方式查询效率对比...我是用的JavaWeb的方式通过通过JSP页面查询的填写查询的参数...给予反馈.... 整个demo的下载地址:http://files.cnblogs.com/f ...
- JDBC 查询的三大参数 setFetchSize prepareStatement(String sql, int resultSetType, int resultSetConcur)
JDBC 查询的三大参数 本文转载至 http://blog.csdn.net/turkeyzhou/article/details/5115228 DBC1.0 .JDBC2.0 .JDBC3.0 ...
- JDBC查询实例
作为Java与数据库交互最古老的.最基础的规范,JDBC提供了访问底层数据库的接口,其他ORM框架都是在JDBC这块基石上构建的.下面我们看一个基本的JDBC查询例子: package com.ins ...
- 使用jdbc查询防止出现中文乱码的方法
在使用mysql创建数据库及表格,在navicat中可以正常查询出中文,但使用jdbc查询的结果中,中文为乱码. 网上查到资料,为了能够彻底一劳永逸的解决这个问题,需要修改mysql下配置文件my.i ...
- JDBC 查询 模板
JDBC 查询 与增删改不同的是SQL语句的不同,还有查询反回的是结果集 需要定义 利用 next()方法逐层查询数据 使用getXXX方法获取数据 代码相关参数根据个人设置进行修改!!!! pac ...
随机推荐
- CF891B Gluttony
原题链接 DOWNLOAD AS PDF 题目大意 给你一个有\(n\)个元素的数组\(a\),让你构造一个数组\(b\),满足从 \(a\).\(b\)中任选出\(k\)个下标对应的元素,它们的和不 ...
- CSS制作导航栏
最终效果: 代码: <!DOCTYPE html> <html> <head> <title>#练习册二</title> <style ...
- 流媒体服务器 red5
https://github.com/Red5/red5-server/releases/tag/v1.0.7-RELEASE 打开此链接 再tar包那里 复制链接地址 Wget此链接地址 W ...
- 8.18 NOIP模拟测试25(B) 字符串+乌鸦喝水+所驼门王的宝藏
T1 字符串 卡特兰数 设1为向(1,1)走,0为向(1,-1)走,限制就是不能超过$y=0$这条线,题意转化为从(0,0)出发,走到(n+m,n-m)且不越过$y=0$,然后就裸的卡特兰数,$ans ...
- 洛谷P5437/5442 约定(概率期望,拉格朗日插值,自然数幂)
题目大意:$n$ 个点的完全图,点 $i$ 和点 $j$ 的边权为 $(i+j)^k$.随机一个生成树,问这个生成树边权和的期望对 $998244353$ 取模的值. 对于P5437:$1\le n\ ...
- Linux性能优化实战学习笔记:第二十一讲
一 内存性能指标 1.系统内存使用情况 共享内存:是通过tmpfs实现的,所以它的大小也就是tmpfs使用的大小了tmpfs其实也是一种特殊的缓存 可用内存:是新进程可以使用的最大内存它包括剩余内存和 ...
- innodb部分内部操作
tab_node_t* tab_create_graph_create( /*====================*/ dict_table_t* table, /*!< in: table ...
- JavaScript 系列--JavaScript一些奇淫技巧的实现方法(二)数字格式化 1234567890转1,234,567,890;argruments 对象(类数组)转换成数组
一.前言 之前写了一篇文章:JavaScript 系列--JavaScript一些奇淫技巧的实现方法(一)简短的sleep函数,获取时间戳 https://www.mwcxs.top/page/746 ...
- CentOS7 配置ip地址
1.查看网络配置文件 可能因为不同的系统,配置文件都不一样,总体来说,配置文件都是 前缀:ifcfg-eno + 后缀:随机数组成 进入到 /etc/sysconfig/network-scripts ...
- kibana无法显示elasticsearch中的index
我是用的logstash将kafka中的数据同步到elasticsearch.logstash和kafka在同一台服务器,elasticsearch在另外的服务器上. 经过排查,是因为我的logsta ...