当前位置:首页 » 编程语言 » java查询数据库数据

java查询数据库数据

发布时间: 2023-05-11 18:59:49

java中怎么把数据库中数据查询出来

刚刚漏了帐号密码了,现在补上

try {
//这里的是MYsql 举例
//加载驱动
Class.forName("com.mysql.jdbc.Driver");
//创建数据库连接
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","root");
//创建查询 “请求”
PreparedStatement ps = con.prepareStatement("select * from user");
//返回查询结果
ResultSet rs = ps.executeQuery();
//遍历结果
while(rs.next()) {
//假如 User 表中 有个 name 列
System.out.println("name >> "+rs.getString("name"));
}
//关闭
rs.close();
ps.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}

㈡ 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}

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

lishixin/Article/program/Java/hx/201311/25890

㈢ 用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实现数据库查询

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如何实现定时从数据库查询新增的数据,

在表上新增一个字段,比如INSERT_TIMESTAMP,要求insert数据的时候必须插入当时的时间。
你select的时候就检查当前时间和上次查询的时间(可以在页面或者内存里记录这个上次查询的时间,或者根据你的定时策略,反推到你上次查询的时间)内的数据可以OK

㈥ 在java中,在下拉列表查询数据库的所有数据怎么查

你的意思是先查询出来所有数据后,再显示到下拉菜单中去对吗?
如果是的话,按下面的思路做,相信你能做出来:
首先你访问这个界面前,要先去查询数据库中的数据,一般这些数据都装到一个list(集合,不一定用List)中去,然后再转到(如果是web项目,就是跳转了,这时把这个list装到request中,request.setAt....(“list”,lits);如果用的是桌面应用程序,就把这个list以参数的形式传到界面类上去)你的界面上,在界面上做一个下拦菜单,然后呢,就是一个循环输出list中包含的所有数据库中的数据,把每次循环取出来的信息放入下拉菜单的选项中去,这样,有多少数据,这个下拉菜单就有多少选项了,不知道是不是你想要的结果,如果不是,你可以再说详细点,方便大家为你解答,。

㈦ java如何查询数据库某表某列的所有值

获得某表所有列的信息:
String sql = select * from tname;//tname为某一表名
Connection conn = ....;
Statement st = conn.createStatement();
ResultSet rs = st.rs = st.executeQuery(sql);
ResultSetMetaData rsmd = rs.getMetaData();
int colcount = rsmd.getColumnCount();//取得全部列数

for(int i=0;i<colcount;i++){
String colname = rsmd.getColumnName(i);//取得全部列名
}

以上为某表字段具体查询,如果是查询表的信息,如在mysql服务器上那样的查询结果的话,可以用一下代码:
ResultSet.executeQuery("show tables")可以的到所有的表信息。
ResultSet.executeQuery("describe tname")可以得到表的字段信息。//tname为表名
p.s :同样适用于jsp。

㈧ java获取数据库数据

1、对应数据库中的表创建实体类(entity),封装a、b、c等字段。
2、使用jdbc查询数据库,一行数据对应一个实体对象,放进一个集合List<entity>中。

㈨ Java如何获取数据库中的数据·案例

下面是一个从 mysql 数据获取用户数据的案例,可以参考一下:

importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
importjava.util.ArrayList;
importjava.util.List;

//用户类,存储单个用户信息
classUser{

privateintid;

privateStringname;

publicUser(intid,Stringname){
this.id=id;
this.name=name;
}

publicintgetId(){
returnid;
}

publicvoidsetId(intid){
this.id=id;
}

publicStringgetName(){
returnname;
}

publicvoidsetName(Stringname){
this.name=name;
}

@Override
publicStringtoString(){
return"User[id="+id+",name="+name+"]";
}
}

publicclassDemo1{

publicstaticvoidmain(String[]args)throwsClassNotFoundException,SQLException{

//本例使用mysql数据库,演示将数据库test的tb_users表中的用户信息
//放到List中

//加载数据驱动
Class.forName("com.mysql.jdbc.Driver");

//数据库连接字符串,此例数据库为test
Stringurl="jdbc:mysql://localhost:3306/test";
Stringuser="root"; //数据库用户名
Stringpassword=""; //数据库密码

//打开一个数据连接
Connectionconn=DriverManager.getConnection(url,user,password);

Statementstmt=conn.createStatement();

//获取表tb_users所有用户信息到结果集中
ResultSetrs=stmt.executeQuery("SELECTid,nameFROMtb_users");

//定义一个存放用户信息的List
List<User>users=newArrayList<>();

//提取用户信息,并将用户信息放入List
while(rs.next()){

//获取用户ID
intid=rs.getInt(1);

//获取用户名
Stringname=rs.getString(2);

users.add(newUser(id,name));
}

rs.close();
stmt.close();
conn.close();

//显示用户信息

for(Useru:users){
System.out.println(u);
}
}
}

㈩ java里当数据库里的数据量很大的时候、要一次性查询出来、并且展示出来、应该怎样查询、效率更高

sql语句要快1.不必要的列就不用查出来;2作为查询的条枯基件列设索引;3.如果查询的表数据大于500万条数据,表创建之初就应该建立表分没链谨区,依据分表去查;
最最重要的是传输给前台页面的数据量尽唤埋量简化减少传输量,比如时间数据最好不传,自己规定个顺序,依据顺序前台生成对应的时间;非要传可转为毫秒数去掉最后四个零(依据实际情况而定,因为时间只要求精确到分),用[]不用{}(key就不用传了,根据商量好的下标对应提取)

热点内容
ftp命令使用 发布:2025-07-18 18:13:05 浏览:45
办税密码是什么 发布:2025-07-18 18:12:32 浏览:487
linuxftp文件下载 发布:2025-07-18 18:12:30 浏览:941
互联网网站服务器搭建 发布:2025-07-18 18:01:06 浏览:478
安卓手机怎么辫真伪 发布:2025-07-18 17:13:14 浏览:186
java后台json 发布:2025-07-18 17:12:21 浏览:680
手机游戏配置主要看哪些 发布:2025-07-18 17:00:47 浏览:148
微课源码 发布:2025-07-18 16:34:44 浏览:1001
压缩长抱枕 发布:2025-07-18 16:13:38 浏览:505
如何使用wifi热点配置网络 发布:2025-07-18 16:06:25 浏览:970