import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import com.hcwy.basic.jdbc.DBConnection; import com.hcwy.basic.page.PageBean; public class ArticlesDAO { private static final Map HashMap = null; private PreparedStatement pstmt; private ResultSet rs; private Connection con; // private DBConnection conn; public Connection conn(){ try { Class.forName("com.mysql.jdbc.Driver"); try { con=DriverManager.getConnection("jdbc:mysql://localhost:3316/hcwy","root","root"); } catch (SQLException e) { e.printStackTrace(); } } catch (ClassNotFoundException e) { e.printStackTrace(); } return con; } //查詢SQL public ArrayList chaSQL(String sql){ ArrayList list=new ArrayList(); try { pstmt=this.conn().prepareStatement(sql); rs=pstmt.executeQuery(); ResultSetMetaData rsmd=rs.getMetaData(); int count=rsmd.getColumnCount(); while(rs.next()){ // System.out.println("名字是-->"+rsmd.getColumnName(i)+"/t 得到的object是-->"+rs.getObject(i)+" "+i); HashMap map=new HashMap(); for(int i=0;i<count;i++){ map.put(rsmd.getColumnName(i+1), rs.getObject(i+1)); } list.add(map); } } catch (SQLException e) { e.printStackTrace(); } return list; } //查詢所總條數 public int count(String name){ String sql="select count(*) as aa from "+name; int i=0; try { pstmt=this.conn().prepareStatement(sql); rs=pstmt.executeQuery(); if(rs.next()){ i=rs.getInt("aa"); } } catch (SQLException e) { e.printStackTrace(); } return i; } //查詢SQL帶分頁 public ArrayList chaSQL(String sql,String name,PageBean page){ ArrayList list=new ArrayList(); if(page!=null){ page.setTotalCount(this.count(name)); sql=sql+" limit "+page.getStart()+","+page.getPageSize(); } System.out.println(sql); try { pstmt=this.conn().prepareStatement(sql); rs=pstmt.executeQuery(); ResultSetMetaData rsmd=rs.getMetaData(); int count=rsmd.getColumnCount();//得到表裏字段的總數 while(rs.next()){ // System.out.println("名字是-->"+rsmd.getColumnName(i)+"/t 得到的object是-->"+rs.getObject(i)+" "+i); HashMap map=new HashMap(); for(int i=0;i<count;i++){ map.put(rsmd.getColumnName(i+1), rs.getObject(i+1));//名字和值 } list.add(map); } } catch (SQLException e) { e.printStackTrace(); } return list; } public static void main(String[] args) { PageBean page=new PageBean(); ArticlesDAO dd=new ArticlesDAO(); ArrayList list=dd.chaSQL("select * from articles","articles",page);//如果這裏不寫page和articles的意思 就是說不要分頁 //任何對象都能解析 for(int i=0;i<list.size();i++){ HashMap map=(HashMap)list.get(i); Iterator it=map.keySet().iterator(); while(it.hasNext()){ Object id=it.next(); System.out.println(""+map.get(id)); } System.out.println("/n"); } // ArticlesDAO dd=new ArticlesDAO(); // System.out.println(dd.count("articles")); } }
Bean:
package com.hcwy.basic.page; public class PageBean { private static final int DEFAULT_PAGE_SIZE = 20; private int pageSize = DEFAULT_PAGE_SIZE; // 每頁的記錄數 private int start=0; // 當前頁第一條數據在List中的位置,從0開始 private int page=1; //當前頁 private int totalPage=0; //總計有多少頁 private int totalCount=0; // 總記錄數 //////////////// // 構造函數 public PageBean() { } public PageBean(int page) { this.page=page; } ///////////////// public void setPage(int page) { if(page>0) { start=(page-1)*pageSize; this.page = page; } } public int getPage() { return page; } public int getPageSize() { return pageSize; } public PageBean setPageSize(int pageSize) { this.pageSize = pageSize; return this; } /** * @return the start */ public int getStart() { return start; } // 此位置根據計算得到 protected void setStart() { } /** * @return the totalCount */ public int getTotalCount() { return totalCount; } public void setTotalCount(int totalCount) { this.totalCount=totalCount; totalPage = (int) Math.ceil((totalCount + pageSize - 1) / pageSize); start=(page-1)*pageSize; } // 總頁面數根據總數計算得到 protected void setTotalPage() { } public int getTotalPage() { return totalPage; } /////////////// //獲取上一頁頁數 public int getLastPage() { if(hasLastPage()) { return page-1; } return page; } public int getNextPage() { if(hasNextPage()) { return page+1; } return page; } /** * 該頁是否有下一頁. */ public boolean hasNextPage() { return page < totalPage; } /** * 該頁是否有上一頁. */ public boolean hasLastPage() { return page > 1; } }
本文分享自華爲雲社區《Sermant在異地多活場景下的實踐》,作者:華爲雲開源。 Sermant社區在1.3.0和1.4.0版本相繼推出了消息隊列禁止消費插件和數據庫禁寫插件,分別用於解決異地多活場景下的故障切流和保護數據一致性問題。本文將
你的 VARCHAR 長度合適麼? 作者:官永強,愛可生 DBA 團隊成員,擅長 MySQL 運維方面的技能。熱愛學習新知識,亦是個愛打遊戲的宅男。 作者:李富強,愛可生 DBA 團隊成員,熟悉 MySQL,TiDB,OceanBase
一、引言 在當前快速發展的互聯網環境中,許多企業和服務都面臨着高併發場景的挑戰。隨着用戶規模不斷增長,對於同一時間內大量用戶請求的處理能力、系統性能、穩定性和容錯性的要求也日益提高。高併發場景對系統架構設計、數據庫設計、緩存策略、自動化運
centos7 安裝 docker 安裝教程可參考:centos7 安裝 docker 開始安裝owncloud 1. 創建一個新的項目目錄 mkdir owncloud-docker-server cd owncloud-doc
MySQL 8.4 LTS 版本,我們一共修改了 20 個 InnoDB 變量的默認值。 作者:Frederic Descamps,EMEA 和亞太地區的 MySQL 社區經理。於 2016 年 5 月加入 MySQL 社區團隊。擔任開源
前言 lightdb數據庫是恆生自主研發的面向金融領域的支持集中式和分佈式的國產數據庫,實現基於PostgreSQL,因此也會遵循postgreSQL的一些事務特性。本文章主要說明的特性爲:在一個事務中,如果有一個SQL執
一、架構圖**** 二、Nginx**** 用於做服務的反向代理。 三、網關**** PaaS平臺所有服務統一入口,包含token鑑權功能。 四、開放平臺**** 對第三方平臺開放的服務入口。 五、MQTT**** MQTT用於設備消息通
本文闡述了某商業銀行如何利用 TiCDC Syncpoint 功能,在 TiDB 平臺上構建一個既能處理實時交易又能進行準實時計算的一體化架構,用以優化其零售資格業務系統的實踐。通過遷移到 TiDB 並巧妙應用 Syncpoint,該銀行成
本文介紹了某省婦幼健康管理系統的建設和數據庫架構優化的過程。原有的數據庫架構使用了 StarRocks 作爲分析層,但隨着業務的發展,這套架構暴露出諸多痛點,不再適應婦幼業務的需求。爲解決這些問題,該系統選擇了將原有架構中的 StarRoc
引言 在數字化浪潮的推動下,數據庫技術已成爲支撐數字經濟的堅實基石。騰訊雲 TVP《技術指針》聯合《明說三人行》特別策劃的直播系列——【中國數據庫前世今生】,我們將通過五期直播,帶您穿越五個十年,深入探討每個時代的數據庫演變
查詢出來的日期數據比數據庫中日期數據晚8小時,一開始很懵逼,IDEA 和 server 時區都一樣呢!後來發現: jdbcUrl=jdbc:mysql://localhost:hentai?useUnicode=true&character
Map是用於保存具有映射關係的數據集合,它具有雙列存儲的特點,即一次必須添加兩個元素,即一組鍵值對<Key,Value>,其中Key的值不可重複(當Key的值重複的時候,後面插入的對象會將之前插入的具有相同的Key值的對象覆蓋掉),Valu
作者:天彤 Atlassian 在 2020 年官方發佈公告,從 2021 年起停止 Jira Server 產品的銷售,並且在 2024 年徹底停止 Server 端產品的服務支持,這對於國內使用 Jira 產品的企業和研發團隊造成了不小
在SqlSugar開發框架的WPF應用中,有時候需要在按鈕或者其他界面元素上使用一些圖標,框架中我們可以使用 lepoco/wpfui 項目的圖標庫,也可以使用Font-Awesome-WPF 圖標庫,另外如果喜歡阿里矢量圖標庫的,也可以通
List 是Java中非常常用的數據類型。 List 是有序的 Collection。 Java List 一共三個實現類:分別是 ArrayList、 Vector 和 LinkedList。 ArrayList(數組) Array