java数据库查询,java数据库查询显示日历

本文目录一览:

用JAVA如何来查询数据库里面相关的数据

你的意思就是根据id

找数据本身以及他的叶子节点。

假设你的表叫location

rs

:

ResultSet

stmt:

Statement

public

ResultSet

getLocation(int

id)

{

String

sql

=

“select

id,

name,

pid

from

location

where

id

=

+

id

+

“or

pid

=

+

id;

rs

=

stmt.executeQuery(sql);

}

java 数据库查询某一条记录

1.可以用离线查询,就是先把数据都取出来,再用list操作。

2.实时查询,每次查询5条记录,即第一条,下一条,当前记录,前一条,最后一条。这样就有了每条记录的id号,再提交按钮的是后直接用java查询,重复即可。

如何用Java实现数据库查询

import java.sql.*;

public class MSSQLText

{

public static void main(String args[])

{

String url=”jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=Northwind”;

String user=”sa”;//这里替换成你自已的数据库用户名

String password=”sa”;//这里替换成你自已的数据库用户密码

String sqlStr=”select CustomerID, CompanyName, ContactName from Customers”;

try

{ //这里的异常处理语句是必需的.否则不能通过编译!

Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”);

System.out.println(“类实例化成功!”);

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

System.out.println(“创建连接对像成功!”);

Statement st = con.createStatement();

System.out.println(“创建Statement成功!”);

ResultSet rs = st.executeQuery(sqlStr);

System.out.println(“操作数据表成功!”);

System.out.println(“—————-!”);

while(rs.next())

{

System.out.print(rs.getString(“CustomerID”) + ” “);

System.out.print(rs.getString(“CompanyName”) + ” “);

System.out.println(rs.getString(“ContactName”));

}

rs.close();

st.close();

con.close();

}

catch(Exception err){

err.printStackTrace(System.out);

}

}

}

Java中的大量数据查询

问题描述 在通常的三层构架下 客户通过Browser请求Web服务器查询数据库 而查询结果是上千条甚至是上百万条记录 要求查询结果传送到客户端浏览器并分页显示

考虑因素

Web服务器的资源消耗 包括 内存(用来存储查询结果) 数据库相关资源(数据库连接对象 ResultSet对象等等)

DB服务器资源的消耗 包括游标 会话等等

网络开销 包括与数据库建立会话 传输查询结果等等

JDBC中的几个重要Class:

A ResultSet object maintains a cursor pointing to its current row of data Initially the cursor is positioned before the first row The next method moves the cursor to the next row and because it returns false when there are no more rows in the ResultSet object it can be used in a while loop to iterate through the result set

ResultSet是直接在数据库上建立游标 然后通过ResultSet的行位置定位接口来获得指定行位置的记录 当用户通过get方法获取具体纪录的内容时 ResultSet才从数据库把所需数据读到客户端

Oracle的ResultSet实现似乎会在本地缓存用户读取过的数据 导致内存消耗会随读取数据的增加而增加 这样 如果一次查询并读取海量数据 即使读出数据后马上丢弃(比如直接写入文件) 内存消耗也会随查询结果的增加而递增

The RowSet interface extends the standard java sql ResultSet interface A RowSet object may make a connection with a data source and maintain that connection throughout its life cycle in which case it is called a connected rowset A rowset may also make a connection with a data source get data from it and then close the connection Such a rowset is called a disconnected rowset A disconnected rowset may make changes to its data while it is disconnected and then send the changes back to the original source of the data but it must reestablish a connection to do so

RowSet是JDBC 中提供的接口 Oracle对该接口有相应实现 其中很有用的是 oracle jdbc rowset OracleCachedRowSet OracleCachedRowSet实现了ResultSet中的所有方法 但与ResultSet不同的是 OracleCachedRowSet中的数据在Connection关闭后仍然有效

解决方案一 直接使用ResultSet来处理

从ResultSet中将查询结果读入collection 缓存在HttpSession或有状态bean中 翻页的时候从缓存中取出一页数据显示 这种方法有两个主要的缺点 一是用户可能看到的是过期数据 二是如果数据量非常大时第一次查询遍历结果集会耗费很长时间 并且缓存的数据也会占用大量内存 效率明显下降

对上述方法的一种改进是当用户第一请求数据查询时 就执行SQL语句查询 获得的ResultSet对象及其要使用的连接对象都保存到其对应的会话对象中 以后的分页查询都通过第一次执行SQL获得的ResultSet对象定位取得指定页的记录(使用rs last();rs getRow()获得总计录条数 使用rs absolute()定位到本页起始记录) 最后在用户不再进行分页查询时或会话关闭时 释放数据库连接和ResultSet对象等数据库访问资源 每次翻页都只从ResultSet中取出一页数据 这种方式在某些数据库(如oracle)的JDBC实现中差不多也是回缓存所有记录而占用大量内存 同时速度也非常慢

在用例分页查询的整个会话期间 一个用户的分页查询就要占用一个数据库连接对象和结果集的游标 这种方式对数据库的访问资源占用比较大 并且其利用率不是很高

优点 减少了数据库连接对象的多次分配获取 减少了对数据库的SQL查询执行

缺点 占用数据库访问资源-数据库连接对象 并占用了数据库上的资源-游标 会消耗大量内存

解决方案二 定位行集SQL查询

使用数据库产品提供的对查询的结果集可定位行范围的SQL接口技术 在用户的分页面查询请求中 每次可取得查询请求的行范围的参数 然后使用这些参数生产取得指定行范围的的SQL查询语句 然后每次请求获得一个数据库连接对象并执行SQL查询 把查询的结果返回给用户 最后释放说有的数据库访问资源

这种方式需要每次请求时都要执行数据库的SQL查询语句 对数据库的访问资源是使用完就立即释放 不白白占用数据库访问资源 对特定(提供了对查询结果集可定位功能的)的数据库产品 如 Oracle(rowid或rownum ) DB (rowid或rownum ()) PostgreSQL(LIMIT 和 OFFSET) mySQL(Limit)等 (MS SQL Server 没有提供此技术 )

下面是在oracle下的查询语句示例

SELECT * FROM ( SELECT row_ * rownum rownum_ FROM ( ) row_ WHERE rownum = {pageNumber*rowsPerPage}) WHERE rownum_ {(pageNumber )*rowsPerPage}

优点 对数据库的访问资源(数据库连接对象 数据库游标等)没有浪费 这些资源的充分重复的利用

lishixinzhi/Article/program/Java/hx/201311/25890

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/304512.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2025-01-01 11:05
下一篇 2025-01-01 11:05

相关推荐

  • Java JsonPath 效率优化指南

    本篇文章将深入探讨Java JsonPath的效率问题,并提供一些优化方案。 一、JsonPath 简介 JsonPath是一个可用于从JSON数据中获取信息的库。它提供了一种DS…

    编程 2025-04-29
  • java client.getacsresponse 编译报错解决方法

    java client.getacsresponse 编译报错是Java编程过程中常见的错误,常见的原因是代码的语法错误、类库依赖问题和编译环境的配置问题。下面将从多个方面进行分析…

    编程 2025-04-29
  • Java腾讯云音视频对接

    本文旨在从多个方面详细阐述Java腾讯云音视频对接,提供完整的代码示例。 一、腾讯云音视频介绍 腾讯云音视频服务(Cloud Tencent Real-Time Communica…

    编程 2025-04-29
  • Java Bean加载过程

    Java Bean加载过程涉及到类加载器、反射机制和Java虚拟机的执行过程。在本文中,将从这三个方面详细阐述Java Bean加载的过程。 一、类加载器 类加载器是Java虚拟机…

    编程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介绍

    本文将详细介绍Java Milvus SearchParam withoutFields的相关知识和用法。 一、什么是Java Milvus SearchParam without…

    编程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java语言中的一个版本,于2014年3月18日发布。本文将从多个方面对Java 8中某一周的周一进行详细的阐述。 一、数组处理 Java 8新特性之一是Stream…

    编程 2025-04-29
  • Java判断字符串是否存在多个

    本文将从以下几个方面详细阐述如何使用Java判断一个字符串中是否存在多个指定字符: 一、字符串遍历 字符串是Java编程中非常重要的一种数据类型。要判断字符串中是否存在多个指定字符…

    编程 2025-04-29
  • VSCode为什么无法运行Java

    解答:VSCode无法运行Java是因为默认情况下,VSCode并没有集成Java运行环境,需要手动添加Java运行环境或安装相关插件才能实现Java代码的编写、调试和运行。 一、…

    编程 2025-04-29
  • Java任务下发回滚系统的设计与实现

    本文将介绍一个Java任务下发回滚系统的设计与实现。该系统可以用于执行复杂的任务,包括可回滚的任务,及时恢复任务失败前的状态。系统使用Java语言进行开发,可以支持多种类型的任务。…

    编程 2025-04-29
  • Java 8 Group By 会影响排序吗?

    是的,Java 8中的Group By会对排序产生影响。本文将从多个方面探讨Group By对排序的影响。 一、Group By的概述 Group By是SQL中的一种常见操作,它…

    编程 2025-04-29

发表回复

登录后才能评论