mysql查詢java
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.ResultSetMetaData;
importjava.sql.Statement;
importjava.util.Hashtable;
publicclassGetDBFiled{
publicstaticvoidconn(){
Stringdriver="com.mysql.jdbc.Driver";
Stringurl="jdbc:mysql://localhost:3306/databaseName";
Stringuser="root";
Stringpassword="密碼";
try{
Class.forName(driver);
Connectionconn=DriverManager.getConnection(url,user,password);
if(!conn.isClosed()){
Stringsql="select*frompic";
System.out.println("!");
Statementstatement=conn.createStatement();
ResultSetrs=statement.executeQuery(sql);
if(rs.next()){
//得到ResultSetMetaData
ResultSetMetaDatarsmd=rs.getMetaData();
System.out.println(rsmd.getColumnCount());
for(inti=1;i<=rsmd.getColumnCount();i++){
Hashtablehst=newHashtable();
//把欄位名放入Name
Stringname=String.valueOf(rsmd.getColumnLabel(i));
hst.put("Name",name);
//把欄位類型放入Type
Stringtype=String.valueOf(rsmd.getColumnType(i));
hst.put("Type",type);
System.out.println(hst.get("Name")+""+hst.get("Type"));
}
}
}
}catch(Exceptione){
System.out.println("出現異常");
}
}
}
❷ java語言 mysql資料庫 查詢方法
樓主,其實寫法清晰一點很容易理解
第1個方法,返回的是List<List<Object>>的數據,即返回一個二維表格
第2個方法,返回的是List<Object>的數據,即返回一個
❸ 求一個java mysql 查詢思路
其實我也沒有啥好辦法,我甚至推薦你使用樓上說的方法,直接select * 將數據全部查出後,在service中用java處理數據更加方便。
如果要強行使用sql查出來,我這里寫了這么一段:
首先因為是同一張表,根據不同條件將結果拼接在一起,我能想到的就是用left join,我按照不同條件將數據分成如下幾段:
a段:姓名段,作為left join的主表,只有姓名;
b段:吃了早餐段;
c段:沒吃早餐段;
d段:吃了晚餐段;
e段:沒吃晚餐段;
f段:吃了飯段;
g段:沒吃飯段。
除了a段以外,其他段都是根據自身條件
SELECT
name,
count(*) count,
sum(weight) sum,
然後依次左連接將所有段通過姓名連接到一起,最終組成的sql語句如下:
SELECT
a.name 姓名,
ifnull(b.count, 0) 吃了早餐的次數,
ifnull(b.sum, 0) 吃了早餐的重量,
ifnull(c.count, 0) 沒吃早餐的次數,
ifnull(c.sum, 0) 沒吃早餐的重量,
ifnull(d.count, 0) 吃了晚餐的次數,
ifnull(d.sum, 0) 吃了晚餐的重量,
ifnull(e.count, 0) 沒吃晚餐的次數,
ifnull(e.sum, 0) 沒吃晚餐的重量,
ifnull(f.count, 0) 吃了飯的次數,
ifnull(f.sum, 0) 吃了飯的重量,
ifnull(g.count, 0) 沒吃飯的次數,
ifnull(g.sum, 0) 沒吃飯的重量
FROM
(SELECT DISTINCT name
FROM T) a LEFT JOIN
(SELECT
name,
count(*) count,
sum(weight) sum
FROM T
WHERE type = 0 AND status = 0
GROUP BY name) b ON a.name = b.name
LEFT JOIN
(SELECT
name,
count(*) count,
sum(weight) sum
FROM T
WHERE type = 0 AND status = 1
GROUP BY name) c ON a.name = c.name
LEFT JOIN
(SELECT
name,
count(*) count,
sum(weight) sum
FROM T
WHERE type = 1 AND status = 0
GROUP BY name) d ON a.name = d.name
LEFT JOIN
(SELECT
name,
count(*) count,
sum(weight) sum
FROM T
WHERE type = 1 AND status = 1
GROUP BY name) e ON a.name = e.name
LEFT JOIN
(SELECT
name,
count(*) count,
sum(weight) sum
FROM T
WHERE status = 0
GROUP BY name) f ON a.name = f.name
LEFT JOIN
(SELECT
name,
count(*) count,
sum(weight) sum
FROM T
WHERE status = 1
GROUP BY name) g ON a.name = g.name
T表結構為:
❹ mysql進行分庫之後,java里怎麼進行查詢
根據業務邏輯,自己定一個規則去選擇不同的庫存儲。比方如計算機類書籍存儲A庫中的書籍表。經濟類的書籍存儲B。最終構造一個KEY(書籍類型)- value(庫標識)。查詢時根據庫標識取出對應的數據源進行查詢。
❺ 有關用java連接MySQL寫查詢語句的問題
第一種方式:HQL(Hibernate Query Languge,Hibernate 查詢語言)查詢
是一種面向對象的查詢語言,其中沒有表和欄位的概念,只有類、對象和屬性的概念,HQL 是應用較為廣泛的方式
語法:[select/update/delete……] from Entity [where……] [group by……] [having……] [order by……]
(1).沒使用Spring框架的寫法:
使用HQL需要四步
得到Session、編寫HQL語句、創建Query對象(Query介面是HQL 查詢介面。它提供了各種的查詢功能)、執行查詢,得到結果
sessionFactory =
new Configuration().configure().buildSessionFactory();
session = sessionFactory.openSession();
String hql = 「from Street」;
Query query = session.createQuery(hql);
List<Street> list = query.list();
(2).使用Spring框架的寫法:
String queryString = "select form entity ....";
List list=getHibernateTemplate().find(queryString);
第二種方式:Criteria 查詢
Criteria 查詢採用面向對象方式封裝查詢條件,又稱為對象查詢;
就是對SQL 語句進行封裝,採用對象的方式來組合各種查詢條件
由Hibernate 自動產生SQL 查詢語句
❻ java線程中使用mysql連接查詢資料庫
不建議這樣做,一般不符合開發規范,如果這樣的話,你想想在業務量多的情況下,多個線程如果不控制,資料庫連接會將資料庫伺服器爆掉的,會影響業務的
常規做法:資料庫連接池(rid了解一下),據某些統計哈,真正用來做查詢的資源不超過整個查詢資料庫的生命周期的30%,大部分時間都用開創建連接關閉連接等操作,如果這個時候建立資料庫連接池的話,可以有效的將這部分時間釋放掉
❼ 關於java查詢mysql資料庫的問題。
應該是編碼問題,中英文編碼轉換的問題。
MySQL中默認字元集的設置有四級:伺服器級,資料庫級,表級 。最終是欄位級 的字元集設置。注意前三種均為默認設置,並不代碼你的欄位最終會使用這個字元集設置。所以我們建議要用show create table table ; 或show full fields from tableName; 來檢查當前表中欄位的字元集設置。
MySQL中關於連接環境的字元集設置有 Client端,connection, results 通過這些參數,MySQL就知道你的客戶端工具用的是什麼字元集,結果集應該是什麼字元集。這樣MySQL就會做必要的翻譯,一旦這些參數有誤,自然會導致字元串在轉輸過程中的轉換錯誤。基本上99%的亂碼由些造成。
我在用hibernate做,編碼也改了,可是還有問題。最後在hibernate.cfg.xml中配置<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/online?characterEncoding=UTF-8</property>就解決了
❽ 用java查詢mysql資料庫問題
MYSQL中沒有Oracle類似的CONNECT BY 語句,如果要實現樹狀查詢的話,如果是5.0以上版本可以使用存儲過程:
DELIMITER $$
DROP PROCEDURE IF EXISTS `sx_finance`.`pro_channel_class`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `pro_channel_class`(in parentid int)
begin
declare level smallint default 0;
declare cnt int default 0;
create temporary table tt(class_id int,class_name varchar(20),PARENT_ID int,level smallint,sort varchar(1000));
create temporary table tt2(class_id int,class_name varchar(20),PARENT_ID int,level smallint,sort varchar(1000));
insert into tt select class_id,class_name,PARENT_ID,level,cast(class_id as char) from CHANNEL_CLASS where PARENT_ID=parentid;
select row_count() into cnt;
insert into tt2 select * from tt;
while cnt>0 do
set level=level+1;
truncate table tt;
insert into tt select a.class_id,a.class_name, a.PARENT_ID,level,concat(b.sort,a.class_id) from CHANNEL_CLASS a,tt2 b where a.PARENT_ID=b.class_id and b.level=level-1;
select row_count() into cnt;
insert into tt2 select * from tt;
end while;
select class_id, concat(space(a.level*2),'|---',a.class_name) class_name from tt2 a order by sort;
drop table tt;
drop table tt2;
end$$
DELIMITER ;
要不就只能用JAVA程序實現
❾ 說明在java程序中連接並查詢Mysql的主要命令和步驟
java程序連接MySql的主流方法是通過JDBC,你需要去MySql官網下一個他們的驅動包,然後以外部包的形式導入到項目中
建立連接
進行查詢
Class.forName("com.mysql.jdbc.Driver");
//DatabaseName是資料庫名
Connectionct=DriverManager.getConnection("jdbc:mysql://localhost:3306/DatabaseName",username,password);
//此時就可以使用這個連接進行增刪改查了
我這里貼上我以前寫的一個demo的部分查詢代碼
PreparedStatmentps=ct.prepareStatement("select*fromstudentswhereNumber=?");//sql語句結尾不需要;
//?可以為任何類型在函數中聲明類似ps.set類型(第幾個,數據);
//sql語句可以為任何種類,第一個是從1開始
ps.setInt(1,2);
ResultSetrs=ps.executeQuery();
while(rs.next()){
intNumber=rs.getInt(1);//第一個欄位,順序與sql語句查詢的順序對應,若為*則按照表中欄位順序獲取
TimeTime=rs.getTime(3);
StringName=rs.getString(2);
StringSex=rs.getString(4);
System.out.println("編號:"+Number+",姓名:"+Name+",出生時間:"+Time+",性別:"+Sex);
}
項目最後需要關閉連接
ct.close();