當前位置:首頁 » 編程語言 » sql多用戶查詢java
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql多用戶查詢java

發布時間: 2022-05-26 14:02:09

㈠ java中sql的多重循環查詢問題求助。

Statement既然有兩個,即它們的結果集是分開的,這樣從資料庫上是沒有錯誤的,第一次循環(這里的第一次循環是指外圍循環,即rs1的循環)沒有問題,問題在於當進入第二次循環(rs1的第二次循環)後,由於rs2在第一次循環(這里的第一次循環是指外圍循環,即rs1的循環)結束時調用了close方法已經關閉了,所以當第二次循環時(rs1的第二次循環)運行在rs2=stmt2.executeQuery(sql2);.
會發生錯誤,rs2已經關閉了,所以建議rs2這個對象要在rs1的循環中建立。

在使用Statement時要注意調用executeQuery,每調用一次,那麼該Statement對象對應的上一次結果集就會自動關閉掉。
如rs1=st.executeQuery(sql);
rs2=st.executeQuery(sql);
這時rs1就自動關閉掉了,你再想獲得rs1的內容會異常。

㈡ java對SQL查詢多條怎麼查

最簡單的方法是編寫JDBC,就能傳入sql語句。

要查2012-3-6到2012-3-7的怎麼做,可以傳入:
sql語句:
select *from from UserTable u where u.date between '2012-3-6' and '2012-3-7';
注:如果date不是string類型的話,需要通過相應的函數進行轉換,不同的資料庫轉換函數有點不一樣。還有這邊也可以使用 u.date>'2012-3-6' and u.date<'2012-3-7'的寫法。

㈢ java程序裡面的sql多表查詢問題

你這里的sql語句又不用傳參數。用啥paras數組呢?何況你的paras數組的值是1啊。你串出來sql語句最後就等於 select check_qk.roomno,checktime,roomtypes,room_price,roomtel,guestname,guestphone
from guest,check_qk,roommes,roomtype
where 1=1;

㈣ JAVA多項查詢有6個選項,用SQL語句查詢,怎麼實現多項查詢 怎麼拼接SQL語句

在java中嗎?字元串拼接啊、放到session或者hibernate讓他們自己查就行了,主要是你拼接的對不對!

㈤ java sql多條件查詢

樓上的,那是聯合主鍵, primary key (學號,圖書號)

select * from table_name where 學號='a' and 圖書號='b';

㈥ Java sql實現聯合查詢的語句

-----select語句的綜合使用

select * from 系部表 ------ 『*』代表所有內容,也就是查看『系部表』的所有內容。

------輸出部分列

select 欄位,欄位 from

select 系部代號,系主任 from 系部表 ------查看『系部表』中『系部代號』和『系主任』兩個欄位。

------限制返回行數
select top 3* from

select top 2* from 系部表 ------查看『系部表』中前二行的記錄。

------定義欄位名
select as from

select '明星' as 備注,* from 系部表
------加一欄位,內容為『明星』,欄位名為『備注』,查看所有欄位。

-------描述例
select '描述',欄位 from

select *,總價錢=價錢*數量 from 商品表
------查看所有欄位並加一欄位,欄位名為總價錢,值為『價錢*數量』。

----衍生列
select id,姓名=姓+名 from 身份證

select *,總價錢=價錢*數量 from 商品表

------是否顯重復記錄 只能用於一個欄位
select distinct from

select distinct*from 系部表
------不顯示重復行,如果有兩行或多行在每個欄位的值都一樣,則只顯示一行來代替這些行。

-----條件查詢
select from where

select * from 系部表 where 住址 not in ('沈陽')
------顯示所有欄位,條件是『住址』欄位的值非『沈陽』的。把 not 去掉就是查看『住址』是沈陽的了。

----多個條件
select from where and

select * from 學生 where 年齡<25 and 年齡>20 and 住址 in ('沈陽') and 性別='女'
------多條件查看,年齡在23到30之間,住址在『沈陽』,並且性別為『女』。『好友』是表名

-----空值查詢
欄位 is null

select * from 學生 where 學費 is null
------查看所有欄位,學費欄位為『null』的行。就是沒交學費的學生。

------對查詢結果進行排序
order by 欄位 asc升序(desc降序)

select *from 學生 order by 學號 desc ---(desc是降序,asc是升序,升序可以省略)
------查看所有欄位,以『學號』欄位降序排序。

--********************************************************************************
------對數據進行統計
--記錄的個數 count
--值的總和 sum
--平均值 avg
--最大值 max
--最小值 min

--count的用法

select count(*) from 學生

select count(系部代號) from 系部表
-------顯示該列非空值的行數。如果是(*),就顯示行數,不管空不空。如果寫成count(系部代號+系主任),那麼顯示的是兩列都不為空的行數。

--sum的用法

select sum(學費) from 學生

select sum(價錢*數量) 總價錢 from 商品表
------顯示『價錢』欄位的值乘以『數量』欄位的值,所有行的累加和。就是所以商品的總價錢。其中『總價錢』是列名。

--avg的用法

select avg(年齡) from 學生

select avg(價錢) as 平均價 from 商品表
------顯示所有價錢的平均值。as可以省略。

--max的用法

select max(價錢) as 最高價 from 商品表
------顯示最高價是多少。

--****************************************************************
select * from 商品表 where 價錢 in(select max(價錢) from 商品表)
------括弧語句裡面返回的是『最高價』,條件是顯示『價錢』是最高價的行。
--****************************************************************

--min的用法

select min(年齡) from 學生

select min(價錢) as 最高價 from 商品表
------顯示最低價是多少。

------分組
select from group by 列名

select 商品,sum(價錢) as 總價錢 from 商品表 group by 商品
------顯示『商品』和『總價錢』欄位。
------『總價錢』欄位的值是所有同名『商品』值的和。(因為我們用了"sum(價錢)")sum不能對varchar進行運算
------group by 是用來分組的,也就是用『商品』欄位分組。不顯示重復的商品欄位的行。

-----compute 匯總統計
select from compute
select from order by compute 函數 by

select * from 商品表 compute sum(價錢)
------顯示兩個表,把所有行和所有列都顯示出來,第二個表是一個匯總表,只有一列一行,就是價錢的總合,列名為sum.

select 商品,價錢,數量 from 商品表 order by 商品 desc compute sum(價錢) by 商品
------顯示表的數量為"商品"的種類乘2,一種商品一個表,還有一個sum表會對這個商品的價錢求合。

-------having 條件語句
select from group by having 條件

select 商品,sum(價錢*數量) as 總價錢 from 商品表 group by 商品 having sum(價錢*數量)>20000
-----以商品分組,也就只可以查看商品欄位,還有一個聚合函數欄位。having是條件,是對後面的聚合函數的值的條件。

--*****************************************************************************************

create table aa(a1 int,a2 int)
create table bb(b1 int,b2 int)

insert bb values(2,2)
insert bb values(3,1)
insert bb values(7,23)
insert bb values(5,33)
insert bb values(9,53)

------子查詢
----- 單列單值
where 欄位 條件(必須為單值)

select * from table_a where column_a1 < (select avg(column_b1) from table_b) and column_a1 > 100

------顯示『a1』列中的值在『b』表中的『b1』列中也有的行。

----- 單列多值
where 欄位 in

select * from table_a where column_a1 in(select column_b1 from table_b)

where 欄位<all()

select * from table_a where column_a1 < all(select column_b1 from table_b)
------顯示『a1'列中的值小於『b'表中的『b1'列中全部的值的行。
------只有小於b1列中最小值的才會被顯示

where 欄位<any()

select * from table_a where column_a1 <any(select column_b1 from table_b)
------顯示『a1'列中的值小於『b'表中的『b1'列中任何一行的值的行。
------只要小於b1列中最大值的就會被顯示

-----多列多值
where exists(只查詢)

select * from table_a where exists(select * from table_b where column_b1=101)
------exists它返回一個boolean值。真或假。條件為真則輸出where前面的語句。假則反之。
------這個函數多用與if語句處。exists後面括弧中的條件是如果b1列中有445這個值,就輸出a表。

if exists(select * from sysobjects where name='table_b')
select * from table_a
------sysobjects包含當前資料庫中所有的表。
------也就是說當前資料庫中如果有table_b這個表,就為真。

if exists(select * from sysobjects where name='abc')
drop table abc
create table abc(a varchar(10),b varchar(20))

-------模糊查詢
select from where like'條件'
條件 'a_'
'_a'

select * from table_a where column_a1 like '4__'
------查看a1列中三位數,並且是以4開頭的行。

select * from table_a where column_a1 like '__4'
------查看a1列中三位數,並且是以4結尾的行。

select * from table_a where column_a1 like '_4_'
------查看a1列中三位數,並且是以4為中間的行。

'a%'
'%a'
'%a%'

select * from table_a where column_a1 like '4%'
-----查看a1列中以4開頭的行。

select * from table_a where column_a1 like '%4'
-----查看a1列中以4結尾的行。

select * from table_a where column_a1 like '%4%'
-----查看a1列中有4的行。不管4在什麼位置。

'a[a-z]'
'[a-z]a'

select * from abc where a like'a_'
select * from abc where a like'a[0-9]'
select * from table_a where column_4 like '_b_[0-9]'
-----查看第4列中第二個字元是b,第四個字元是0到9的行。

------將查詢結果生成新表select.....into

select * into 王 from 學生 where 姓名 like'王__'

select * from 王

select * into 美女 from 學生 where 性別 = '女' and 年齡 like '2_'
-----查看學生表中的性別欄位為女年齡十位上是2的行,再把查到的結果生成一個表,表名是into後的美女
-----它是生成一個新表的,和別的查看不一樣。

select * from 美女
--停!!!
--停!!!
--停!!!
--停!!!

------合並結果集 select ...union select....

select * from table_a
select * from table_b

select * from table_a union select * from table_b
select * from table_b union select * from table_a
------查看table_a表和table_b表,兩個表的連接。只是查看,並沒有真正連接。要求這兩個表的列數和列的數據類型完全一致。

-----------------連接查詢
------內連接
--select 列名列表 from 表1 inner join 表2 on 條件
--table_a的行數乘以table_b 的行數。
select * from table_a inner join table_b on table_a.column_a1=table_b.column_b1
------內聯接。顯示出『a』表的『a1』欄位和『b』字的『b1』欄位相同的行。

--select 列名列表 from 表1,表2 where 條件

select *from table_a,table_b where table_a.column_a1=table_b.column_b1
------這是內聯接的簡寫版。

------外聯接
----左外聯接
(1)select 列名列表 from 表1 left join 表2 on 條件
--以左為主,右表有則顯示,無則以null補位
select * from table_a left join table_b on table_a.column_a1=table_b.column_b1
------左聯接。把『a』表中的所有行都顯示出來,『b』表中的『b1』欄位和『a』表中的『a1』欄位
------相等的顯示,但『a』表中沒有的,『b』表沒有的則顯示NULL。

(1)select 列名列表 from 表1,表2 where 條件

select * from table_a,table_b where table_a.column_a1*=table_b.column_b1
------左聯接的簡寫版。"*="是左聯接的意思

----右外聯接

(1)select 列名列表 from 表1 right join 表2 on 條件

select * from table_a right join table_b on table_a.column_a1=table_b.column_b1
------以右面表為准,和左聯接一樣。

(1)select 列名列表 from 表1,表2 where 條件

select * from table_a,table_b where table_a.column_a1=*table_b.column_b1
------右聯接的簡寫版。

----全外聯接
select 列名列表 from 表1 full join 表2 on 條件

select * from table_a full join table_b on table_a.column_a1 = table_b.column_b1
------外聯接的全聯接,兩個表的記錄都會顯示,不滿足條件的以null補位.
------a表15行記錄,b表5行記錄,滿足條件的只有1行記錄,查詢結果有19行。

------------cross join
select 列名列表 from 表1 cross join 表2

select * from aa cross join bb

select * from 學生

create table 成績(xid int,語文 int,數學 int,英語 int,化學 int)

insert 成績 values(1,87,89,78,98)
insert 成績 values(2,17,8,78,98)
insert 成績 values(3,27,99,78,98)
insert 成績 values(4,47,49,78,98)
insert 成績 values(5,79,69,78,98)
insert 成績 values(6,77,99,78,98)
insert 成績 values(7,77,29,78,98)

select * from 成績 cross join 學生
------成績表的第一行記錄對應一次學生表的第一行記錄,總行數為兩個錶行數的乘積

------*************************************************
select b.姓名,a.* from 成績 a,學生 b where a.xid *= b.xid
------左連接,"b.姓名"代表學生表的"姓名"欄位
------哪個是左表哪個是右表由"a.xid *= b.xid"來定,"b.姓名,a.*"是代表顯示的位置
------左連接的特性是顯示左邊表的所有行(成績表的所有欄位的所有行),右邊表只顯示滿足條件的行
------*************************************************

-----------自身連接
select 員工主管.員工編號,員工主管.員工姓名,主管表.員工姓名
from 員工主管 left join 員工主管 as 主管表
on 員工主管.主管編號=主管表.員工編號

select * from 學生 a,學生 b where a.xid=b.xid
-------自聯接,但要給自己起個別名。

㈦ java中如何處理多條件的sql查詢語句

一般多個條件的時候,處理方式是 select * from table where 1 = 1先寫上這樣一個條件,這樣你以後的條件就可以直接用 if判斷了,比如現在有A ,B 兩個條件 就可以直接這樣
String sql = "select * from table where 1 = 1";
if( 條件A != null ){
sql += " and A =" + 條件A;

}
if( 條件B != null ){
sql += " and B =" + 條件B;

}
這樣就可以避免多種情況存在的問題

㈧ java通過用戶名查詢SQL中的信息

/**
* 驗證用戶登陸
*/
public UserInfo login(String un, String pwd) {
String sql = "select * from userInfo where userName = '" + un + "'";
openDB();
try {
ResultSet rs = stt.executeQuery(sql);
if (rs.next()) { //先檢查用戶名是否存在
String pass = rs.getString("password"); //如果有該用戶則得到密碼
if (pass.equalsIgnoreCase(pwd)) { //將得到密碼與輸入密碼進行比較
UserInfo user = new UserInfo(); //如果正確,
user.setUsreName(un);//則將輸入的用戶名設置到 UserInfo 了Bean 中
user.setQx(rs.getString("qx"));//同時設置得到相應的許可權字元串
return user;
}
} else {
return null;
}
} catch (SQLException ex) {
ex.printStackTrace();
} finally {
closeDB();
}
return null;
}

這段代碼是以前常寫的,現在一般不怎麼用了,但基本上符合你的要求

㈨ java里怎麼實現sql嵌套查詢

java裡面要實現sql嵌套查詢的話,如果是javaweb項目,是可以使用hibernate框架提供的直接執行sql語句的方式來實現這樣的功能.

㈩ Java 程序中使用sql語句: 解決多對多查詢

試試這個select * from user u,proct p where u.id=3 and u.id=p.userid
這句話的意思是先把user和proct連接,用proct和user關聯的那個欄位,然後再加上id等於3就完事了