java連接mysql數據庫(JDBC),存到二維數組里并輸出

java連接mysql數據庫都有固定的操作,步驟如下

  1. 加載mysql驅動,一般都是com.mysql.jdbc.Driver。
  2. 提供JDBC連接的URL。
    1. 創建數據庫的連接。要連接數據庫,需要向java.sql.DriverManager請求并獲得Connection對象。

  3. 創建一個Statement。
    1. 要執行SQL語句,必須獲得java.sql.Statement實例,Statement實例分為以下3種類型: ??
    2. ??????1)執行靜態SQL語句。通常通過Statement實例實現。 ??
    3. ??????2)執行動態SQL語句。通常通過PreparedStatement實例實現(常用)。 ??
    4. ??????3)執行數據庫存儲過程。通常通過CallableStatement實例實現。?
      1. 具體實現方式: ??
      2. ? ? ? ?Statement?stmt?=?con.createStatement()?; ??
      3. ???????PreparedStatement?pstmt?=?con.prepareStatement(sql)?; ??
      4. ???????CallableStatement?cstmt?= ?con.prepareCall("{CALL?demoSp(??,??)}")?; ??
    1. 執行SQL語句 ??

    1. ????Statement接口提供了三種執行SQL語句的方法:executeQuery?、executeUpdate和execute ? 。
    2. ? ? ? 1)ResultSet?executeQuery(String?sqlString):執行查詢數據庫的SQL語句,返回一個結果集(ResultSet)對象。 ??
    3. ? ? ??2)int?executeUpdate(String?sqlString):用于執行INSERT、UPDATE或DELETE語句以及SQL?DDL語句,如:CREATE?TABLE和DROP?TABLE等 ??
    4. ? ? ??3)execute(sqlString):用于執行返回多個結果集、多個更新計數或二者組合的語句。 ??
    5. 具體實現方式: ??
    6. ? ? ? ResultSet?rs?=?stmt.executeQuery("SELECT?*?FROM?...")?; ??
    7. ? ? ?int?rows?=?stmt.executeUpdate("INSERT?INTO?...")?; ??
    8. ? ? ?boolean?flag?=?stmt.execute(String?sql)?;
    1. 處理結果 ??

    1. ? ? 有兩種情況: ??
    2. ?????1)執行更新返回的是本次操作影響到的記錄數。 ??
    3. ?????2)執行查詢返回的結果是一個ResultSet對象。 ??
    4. ??????ResultSet包含符合SQL語句中條件的所有行,并且它通過一套get方法提供了對這些行中數據的訪問。 ??
    5. ??????使用結果集(ResultSet)對象的訪問方法獲取數據: ??
    6. ?????while(rs.next()){ ??
    7. ?????????String?name?=?rs.getString("name")?; ??
    8. ? ? ? ? ?String?psw =?rs.getString(1)?;?//?此方法比較高效???
    9. ?????} ??
    10. ????(列是從左到右編號的,并且從列1開始)
    1. 關閉JDBC對象? ??

    1. ?????操作完成以后要把所有使用的JDBC對象全都關閉,以釋放JDBC資源,關閉順序和聲明順序相反: ??
    2. ?????1)關閉記錄集 ??
    3. ?????2)關閉聲明 ??
    4. ?????3)關閉連接對象 ?
        1. if(rs != null){   // 關閉記錄集   try{   rs.close() ;   }catch(SQLException e){   e.printStackTrace() ;   }   }   if(stmt != null){   // 關閉聲明   try{   stmt.close() ;   }catch(SQLException e){   e.printStackTrace() ;   }   }   if(conn != null){  // 關閉連接對象   try{   conn.close() ;   }catch(SQLException e){   e.printStackTrace() ;   }   }  

? ? ? 請注意,如果僅僅是創建一個數據庫連接的話,步驟4、5、6不是必要的。所以,如果你是初學者,只需要用前面的步驟測試數據庫是否連接成功即可,不要做過多的操作,那樣你就能發現其實JDBC連接數據庫的方法其實并不難。但是,當你操作完數據庫,請你記住關閉左右連接對象,釋放資源,這不僅是個好習慣,還能在你處理較大的數據量是避免不必要的麻煩。

? ? ?下面給出一個例子,從mysql中取出數據并存到二維數組里,數據用的是機器學習中的鳶尾花iris數據在機器學習數據集獲取官方網站UCI中點擊打開鏈接),代碼如下

DBConnection.java

package db;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;/*** * 數據庫連接類,通用* * @author lsy* */
public class DBConnection {public static final String driver = "com.mysql.jdbc.Driver";// 驅動public static final String url = "jdbc:mysql://localhost:3306/mydb";// mysql固定的URL:jdbc:mysql://localhost:3306/數據庫名(我這里是mydb)public static final String user = "root";// 我的數據庫的用戶名public static final String pwd = "123";// 我的數據庫密碼public static Connection dBConnection() {Connection con = null;try {// 加載mysql驅動器Class.forName(driver);// 建立數據庫連接con = DriverManager.getConnection(url, user, pwd);} catch (ClassNotFoundException e) {System.out.println("加載驅動器失敗");e.printStackTrace();} catch (SQLException e) {System.out.println("注冊驅動器失敗");e.printStackTrace();}return con;}
}

SelectData.java

package dao;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;import db.DBConnection;/*** * 取出數據,存到二維數組里* * @return flowers* @author lsy*/
public class SelectData {public static final String SELECT = "select* from iris_PCA";public static final int k = 4;// 4個屬性public double[][] getFlowers() throws SQLException {Connection con = DBConnection.dBConnection();ResultSet rs;// 創建結果集PreparedStatement pstmt = con.prepareStatement(SELECT);// 創建一個PreparedStatement對象rs = pstmt.executeQuery();// 為初始化數組的大小提供方便int sample = 0;while (rs.next()) {sample++;}double[][] flower = new double[sample][k];rs = pstmt.executeQuery();// 特別重要,否則取到的全是0。因為執行上面的while(rs.next())后,ResultSet對象的下標已指到0。// API:當生成ResultSet對象的Statement對象關閉、重新執行或用來從多個結果的序列獲取下一個結果時,ResultSet對象將自動關閉。for (int i = 0; rs.next(); i++) {for (int j = 0; j < k; j++) {flower[i][j] = rs.getDouble(j + 2);}}// 輸出二維數組System.out.println("花花: ");for (int i = 0; i < flower.length; i++) {for (int j = 0; j < flower[0].length; j++) {System.out.print(flower[i][j] + "\t");}System.out.println();}pstmt.close();rs.close();con.close();return flower;}public static void main(String[] args) {try {SelectData selectData = new SelectData();selectData.getFlowers();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
}


輸出結果:

花花: 
5.1	3.5	1.4	0.2	
4.9	3.0	1.4	0.2	
4.7	3.2	1.3	0.2	
4.6	3.1	1.5	0.2	
5.0	3.6	1.4	0.2	
5.4	3.9	1.7	0.4	
4.6	3.4	1.4	0.3	
5.0	3.4	1.5	0.2	
4.4	2.9	1.4	0.2	
4.9	3.1	1.5	0.1	
5.4	3.7	1.5	0.2	
4.8	3.4	1.6	0.2	
4.8	3.0	1.4	0.1	
4.3	3.0	1.1	0.1	
5.8	4.0	1.2	0.2	
5.7	4.4	1.5	0.4	
5.4	3.9	1.3	0.4	
5.1	3.5	1.4	0.3	
5.7	3.8	1.7	0.3	
5.1	3.8	1.5	0.3	
5.4	3.4	1.7	0.2	
5.1	3.7	1.5	0.4	
4.6	3.6	1.0	0.2	
5.1	3.3	1.7	0.5	
4.8	3.4	1.9	0.2	
5.0	3.0	1.6	0.2	
5.0	3.4	1.6	0.4	
5.2	3.5	1.5	0.2	
5.2	3.4	1.4	0.2	
4.7	3.2	1.6	0.2	
4.8	3.1	1.6	0.2	
5.4	3.4	1.5	0.4	
5.2	4.1	1.5	0.1	
5.5	4.2	1.4	0.2	
4.9	3.1	1.5	0.1	
5.0	3.2	1.2	0.2	
5.5	3.5	1.3	0.2	
4.9	3.1	1.5	0.1	
4.4	3.0	1.3	0.2	
5.1	3.4	1.5	0.2	
5.0	3.5	1.3	0.3	
4.5	2.3	1.3	0.3	
4.4	3.2	1.3	0.2	
5.0	3.5	1.6	0.6	
5.1	3.8	1.9	0.4	
4.8	3.0	1.4	0.3	
5.1	3.8	1.6	0.2	
4.6	3.2	1.4	0.2	
5.3	3.7	1.5	0.2	
5.0	3.3	1.4	0.2	
7.0	3.2	4.7	1.4	
6.4	3.2	4.5	1.5	
6.9	3.1	4.9	1.5	
5.5	2.3	4.0	1.3	
6.5	2.8	4.6	1.5	
5.7	2.8	4.5	1.3	
6.3	3.3	4.7	1.6	
4.9	2.4	3.3	1.0	
6.6	2.9	4.6	1.3	
5.2	2.7	3.9	1.4	
5.0	2.0	3.5	1.0	
5.9	3.0	4.2	1.5	
6.0	2.2	4.0	1.0	
6.1	2.9	4.7	1.4	
5.6	2.9	3.6	1.3	
6.7	3.1	4.4	1.4	
5.6	3.0	4.5	1.5	
5.8	2.7	4.1	1.0	
6.2	2.2	4.5	1.5	
5.6	2.5	3.9	1.1	
5.9	3.2	4.8	1.8	
6.1	2.8	4.0	1.3	
6.3	2.5	4.9	1.5	
6.1	2.8	4.7	1.2	
6.4	2.9	4.3	1.3	
6.6	3.0	4.4	1.4	
6.8	2.8	4.8	1.4	
6.7	3.0	5.0	1.7	
6.0	2.9	4.5	1.5	
5.7	2.6	3.5	1.0	
5.5	2.4	3.8	1.1	
5.5	2.4	3.7	1.0	
5.8	2.7	3.9	1.2	
6.0	2.7	5.1	1.6	
5.4	3.0	4.5	1.5	
6.0	3.4	4.5	1.6	
6.7	3.1	4.7	1.5	
6.3	2.3	4.4	1.3	
5.6	3.0	4.1	1.3	
5.5	2.5	4.0	1.3	
5.5	2.6	4.4	1.2	
6.1	3.0	4.6	1.4	
5.8	2.6	4.0	1.2	
5.0	2.3	3.3	1.0	
5.6	2.7	4.2	1.3	
5.7	3.0	4.2	1.2	
5.7	2.9	4.2	1.3	
6.2	2.9	4.3	1.3	
5.1	2.5	3.0	1.1	
5.7	2.8	4.1	1.3	
6.3	3.3	6.0	2.5	
5.8	2.7	5.1	1.9	
7.1	3.0	5.9	2.1	
6.3	2.9	5.6	1.8	
6.5	3.0	5.8	2.2	
7.6	3.0	6.6	2.1	
4.9	2.5	4.5	1.7	
7.3	2.9	6.3	1.8	
6.7	2.5	5.8	1.8	
7.2	3.6	6.1	2.5	
6.5	3.2	5.1	2.0	
6.4	2.7	5.3	1.9	
6.8	3.0	5.5	2.1	
5.7	2.5	5.0	2.0	
5.8	2.8	5.1	2.4	
6.4	3.2	5.3	2.3	
6.5	3.0	5.5	1.8	
7.7	3.8	6.7	2.2	
7.7	2.6	6.9	2.3	
6.0	2.2	5.0	1.5	
6.9	3.2	5.7	2.3	
5.6	2.8	4.9	2.0	
7.7	2.8	6.7	2.0	
6.3	2.7	4.9	1.8	
6.7	3.3	5.7	2.1	
7.2	3.2	6.0	1.8	
6.2	2.8	4.8	1.8	
6.1	3.0	4.9	1.8	
6.4	2.8	5.6	2.1	
7.2	3.0	5.8	1.6	
7.4	2.8	6.1	1.9	
7.9	3.8	6.4	2.0	
6.4	2.8	5.6	2.2	
6.3	2.8	5.1	1.5	
6.1	2.6	5.6	1.4	
7.7	3.0	6.1	2.3	
6.3	3.4	5.6	2.4	
6.4	3.1	5.5	1.8	
6.0	3.0	4.8	1.8	
6.9	3.1	5.4	2.1	
6.7	3.1	5.6	2.4	
6.9	3.1	5.1	2.3	
5.8	2.7	5.1	1.9	
6.8	3.2	5.9	2.3	
6.7	3.3	5.7	2.5	
6.7	3.0	5.2	2.3	
6.3	2.5	5.0	1.9	
6.5	3.0	5.2	2.0	
6.2	3.4	5.4	2.3	
5.9	3.0	5.1	1.8	


寫博經驗尚淺,歡迎各位多多指教。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/386115.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/386115.shtml
英文地址,請注明出處:http://en.pswp.cn/news/386115.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

保駕護航金三銀四,萬字解析!

從事前端開發工作差不多3年了&#xff0c;自己也從一個什么都不懂的小白積累了一定的理論和實踐經驗&#xff0c;并且自己也對這3年來的學習實踐歷程有一個梳理&#xff0c;以供后面來細細回憶品味。 1、為什么選擇學習前端開發&#xff1f; 你可能是因為興趣&#xff0c;完成…

數據降維技術——PCA(主成分分析)

為什么要對數據進行降維&#xff1f; 在機器學習或者數據挖掘中&#xff0c;我們往往會get到大量的數據源&#xff0c;這些數據源往往有很多維度來表示它的屬性&#xff0c;但是我們在實際處理中只需要其中的幾個主要的屬性&#xff0c;而其他的屬性或被當成噪聲處理掉。比如&a…

保駕護航金三銀四,使用指南

前言 作為一個程序員&#xff0c;當然總是期望自己的代碼能「一次編寫&#xff0c;四處運行」&#xff0c;但真實經驗往往是「一處修改&#xff0c;百處填坑」&#xff0c;依賴落后了好幾個版本了想要升級、老代碼已經看著很不爽了打算重構&#xff0c;都需要下堅決的決心&…

社交網絡初探——鏈路預測

社交網絡可以用來描述現實社會中的實際網絡&#xff0c;它包括人與人之間的社會關系&#xff0c;物種之間的捕食關系&#xff0c;科學研究中的合作關系等。大量研究已經表明在真實世界中各種不同社交網絡具有許多共同的結構特征&#xff0c;例如小世界性質、無標度性、社團結構…

保駕護航金三銀四,內容太過真實

前言 正式學習前端大概 3 年多了&#xff0c;接觸前端大概 4 年了&#xff0c;很早就想整理這個書單了&#xff0c;因為常常會有朋友問&#xff0c;前端該如何學習&#xff0c;學習前端該看哪些書&#xff0c;我就講講我學習的道路中看的一些書&#xff0c;雖然整理的書不多&a…

決策樹——ID3和C4.5

決策樹&#xff08;decision tree&#xff09;是一個樹結構&#xff08;可以是二叉樹或非二叉樹&#xff09;。其每個非葉節點表示一個特征屬性上的測試&#xff0c;每個分支代表這個特征屬性在某個值域上的輸出&#xff0c;而每個葉節點存放一個類別。使用決策樹進行決策的過程…

保駕護航金三銀四,分分鐘搞定!

開頭 Web前端開發基礎知識學習路線分享&#xff0c;前端開發入門學習三大基礎&#xff1a;HTML、CSS、JavaScript。除此之外還要學習數據可視化、Vue、React、Angular相關框架&#xff0c;熟練運用框架提升開發效率&#xff0c;提升穩定性。 [外鏈圖片轉存失敗,源站可能有防盜…

數組的初始化及輸出

二維數組可以不初始化列數&#xff08;第二維&#xff09;。 下面給出的例子是用兩種不同的方式存儲二維數組并輸出&#xff1a; 1. 這是我們通俗易懂的二維數組存儲方法&#xff1a; String[][] data new String[][] {{ "youth", "high", "no&quo…

保駕護航金三銀四,吐血整理

前言 又逢金三銀四&#xff0c;拿到大廠的offer一直是程序員朋友的一個目標&#xff0c;我是如何拿到大廠offer的呢&#xff0c;今天給大家分享我拿到大廠offer的利器&#xff0c;前端核心知識面試寶典&#xff0c;內容囊括Html、CSS、Javascript、Vue、HTTP、瀏覽器面試題\數…

Ajax知識筆記——入門,同步和異步,XHR

Ajax全稱&#xff1a;Asynchronous Javascript and XML &#xff0c;異步的javascript和XML。 Ajax不是一種語言&#xff0c;是一種無需重新加載整個網頁的情況下&#xff0c;能更新部分網頁的技術。&#xff08;與后臺交互&#xff0c;實現局部更新&#xff0c;異步更新&…

保駕護航金三銀四,含BATJM大廠

前言 跳槽&#xff0c;這在 IT 互聯網圈是非常普遍的&#xff0c;也是讓自己升職加薪&#xff0c;走上人生巔峰的重要方式。那么作為一個普通的Android程序猿&#xff0c;我們如何才能斬獲大廠offer 呢&#xff1f; 疫情向好、面試在即&#xff0c;還在迷茫躊躇中的后浪們&…

保駕護航金三銀四,媽媽再也不用擔心我找工作了!

01 前言 2021是不平凡的一年&#xff0c;這一年里發生許多事情&#xff0c;大家也都知道。對于互聯網行業來說也是一次重大的打擊&#xff0c;也有一些企業在這次疫情中倒閉了&#xff0c;所以可能對于今年2021年畢業的同學來說是一次很大的考驗&#xff0c;也關乎我們的前途。…

web開發者工具,118頁Vue面試題總結,漲姿勢!

邏輯運算符 JavaScript中有三個邏輯運算符&#xff0c;&&與、||或、!非。 JavaScript 中的邏輯運算符可用來確定變量或者是值之間的邏輯關系。通常用于布爾型值&#xff0c;會返回一個布爾值true 或 false。而 &&、|| 運算符能夠使用非布爾值的操作數&#x…

2G、3G 和 4G

2G、3G 和 4G 區別形象比喻 版本1&#xff1a; 2G 看小說&#xff1b; 3G 看app、微博、新聞……&#xff1b; 4G 看蒼井空、松島楓…… 版本2&#xff1a; 2G 看「女教師.txt」 3G 看「女教師.jpg」 4G 看「女教師.avi」 版本3&#xff1a; 選自&#xff1a;365知識網 2G:打個…

web開發者工具,261頁前端面試題寶典,通用流行框架大全

開頭 Web前端開發基礎知識學習路線分享&#xff0c;前端開發入門學習三大基礎&#xff1a;HTML、CSS、JavaScript。除此之外還要學習數據可視化、Vue、React、Angular相關框架&#xff0c;熟練運用框架提升開發效率&#xff0c;提升穩定性。 [外鏈圖片轉存失敗,源站可能有防盜…

jsp+js實現二級級聯

本文實現學院-專業二級級聯&#xff0c;同理可用到省份-城市&#xff0c;洲-國家等級聯&#xff0c;即通過不同的首選擇&#xff0c;自動找到屬于第一選擇的二次可選項。 test.jsp <% page language"java" contentType"text/html; charsetgb2312" impor…

web開發者工具,你必須知道的CSS盒模型,架構師必備!

前言 不要為了面試而去背題&#xff0c;匆匆忙忙的&#xff0c;不僅學不進去&#xff0c;背完了幾天后馬上會忘記。 你可能會說&#xff0c;“沒辦法&#xff0c;這不是為了能找份工作嘛&#xff01;”。我想說的是&#xff0c;“那你沒開始找工作的時候&#xff0c;咋不好好…

web開發要學多久,HTML表格標簽,薪資翻倍

前言 作為一個程序員&#xff0c;當然總是期望自己的代碼能「一次編寫&#xff0c;四處運行」&#xff0c;但真實經驗往往是「一處修改&#xff0c;百處填坑」&#xff0c;依賴落后了好幾個版本了想要升級、老代碼已經看著很不爽了打算重構&#xff0c;都需要下堅決的決心&…

js含有特定文字不能跳轉

<html> <head> <script type"text/javascript"> function checkUpload() { for(var i0;i<document.files.filename.length;i){ if(document.files.filename[i].value"未選擇文件"){alert("請檢查要上傳的文件是否全部添加!"…

web開發課程培訓,10大前端常用算法,學習路線+知識點梳理

標簽語義化&#xff1a; 語義和默認樣式的區別&#xff1a; 默認樣式是瀏覽器設定的一些常用tag的表現形式&#xff1b;語義化的主要目的就是讓大家直觀的認識標簽和屬性的用途和作用&#xff1b; 標簽語義化作用&#xff1a; 當只有HTML頁面時&#xff0c;沒有CSS&#xf…