Java-JDBC操作MySQL

Java-JDBC操作MySQL

文章目錄

  • Java-JDBC操作MySQL
    • 一、Java-JDBC-MySQL的關系
    • 二、創建連接
    • 三、登錄MySQL
    • 四、操作數據庫
      • 1、返回型操作
      • 2、無返回型操作
    • 練習題目及完整代碼

一、Java-JDBC-MySQL的關系

調用
操作
返回
JAVA
JDBC庫
MySQL

二、創建連接

首先在MySQL官網下載一個jar包,然后導入編譯器中,然后導入。

通過官方文檔,在MySQL8.0以后,連接的地址為com.mysql.cj.jdbc.Driver,地址需要添加代碼serverTimezone=UTC

這里創建一個DBHelper工具類,將這兩個參數設為常量便于使用。

class DBHelper {final static String className = "com.mysql.cj.jdbc.Driver";final static String mysqladdress = "jdbc:mysql://localhost:3306/java?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=TRUE";}

其中localhost為地址,3306為端口,java是數據庫名稱

三、登錄MySQL

有了指定的地址,還需要用戶和密碼才能登錄數據庫。為了安全,此處不使用root用戶,采用新開一個賬戶來進行對數據庫的操作。

create user 'java'@'localhost' identified by '123456';
grant all on java to 'java'@'localhost';

同樣定義常量存儲用戶名和密碼。

private String user, psw;

通過構造函數來對user和psw變量賦值。

DBHelper(String user, String psw) {this.user = user;this.psw = psw;}

四、操作數據庫

有了地址、用戶、密碼,就可以登錄數據庫進行操作,在此之前,需要先實例化Connection類和Statement類,并在try-catch語句中創建對數據庫的連接和數據傳遞。

Connection connection;Statement statement;try {Class.forName(className);connection = DriverManager.getConnection(mysqladdress, user, psw);statement = connection.createStatement();}catch (Exception e) {e.printStackTrace();}

連接好數據庫之后,就可以使用SQL語句對數據庫進行操作。

1、返回型操作

定義一個SQL語句在String中,實例化一個ResultSet,并使用statement傳輸SQL命令。由于select語句是有返回值的,所以使用executeQuery類型進行返回。

String sql = "select * from teacher";
ResultSet resultSet = statement.executeQuery(sql);

由于select的返回可能不止一條數據,所以使用while循環,調用resultSet中的next()函數,用于判斷是否還有數據返回。然后使用resultSet中的get函數,獲取字段內容。

 while (resultSet.next()) {String tid = resultSet.getString("tid");String tname = resultSet.getString("tname");String sex = resultSet.getString("sex");int age = resultSet.getInt("age");String professional_title = resultSet.getString("professional_title");int basic_salary = resultSet.getInt("basic_salary");System.out.print("tid:" + tid + "\t");System.out.print("tname:" + tname + "\t");System.out.print("sex:" + sex + "\t");System.out.print("age:" + age + "\t");System.out.print("professional_title:" + professional_title + "\t");System.out.println("basic_salary:" + basic_salary);}

最后操作完畢,關閉對象釋放內存即可。

resultSet.close();
statement.close();
connection.close();

返回型操作完整代碼:

  Connection connection;Statement statement;try {Class.forName(className);connection = DriverManager.getConnection(mysqladdress, user, psw);statement = connection.createStatement();String sql = "select * from teacher";ResultSet resultSet = statement.executeQuery(sql);while (resultSet.next()) {String tid = resultSet.getString("tid");String tname = resultSet.getString("tname");String sex = resultSet.getString("sex");int age = resultSet.getInt("age");String professional_title = resultSet.getString("professional_title");int basic_salary = resultSet.getInt("basic_salary");System.out.print("tid:" + tid + "\t");System.out.print("tname:" + tname + "\t");System.out.print("sex:" + sex + "\t");System.out.print("age:" + age + "\t");System.out.print("professional_title:" + professional_title + "\t");System.out.println("basic_salary:" + basic_salary);}resultSet.close();statement.close();connection.close();} catch (Exception e) {e.printStackTrace();}

2、無返回型操作

與有返回操作一致,需要先對數據庫建立通訊。

Connection connection;Statement statement;try {Class.forName(className);connection = DriverManager.getConnection(mysqladdress, user, psw);statement = connection.createStatement();} catch (Exception e) {e.printStackTrace();}

然后使用sql語句代碼,這里以insert into語句為例。使用executeUpdate函數進行操作,由于沒有返回值,直接使用statement進行操作后即可。

String sql = "insert into teacher(tid,tname,sex,age,professional_title,basic_salary) values('19G00001','靳小翠','女',38,'教授',16000)";
statement.executeUpdate(sql);

最后也是需要關閉對象。

無返回型操作完整代碼:

        Connection connection;Statement statement;try {Class.forName(className);connection = DriverManager.getConnection(mysqladdress, user, psw);statement = connection.createStatement();String sql = "insert into teacher(tid,tname,sex,age,professional_title,basic_salary) values('19G00001','靳小翠','女',38,'教授',16000)";statement.executeUpdate(sql);connection.close();statement.close();} catch (Exception e) {e.printStackTrace();}

練習題目及完整代碼

題目:
題目
完整代碼

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Scanner;class DBHelper {final static String className = "com.mysql.cj.jdbc.Driver";final static String mysqladdress = "jdbc:mysql://localhost:3306/java?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=TRUE";private String user, psw;DBHelper(String user, String psw) {this.user = user;this.psw = psw;}public void show_table() {Connection connection;Statement statement;try {Class.forName(className);connection = DriverManager.getConnection(mysqladdress, user, psw);statement = connection.createStatement();String sql = "select * from book";ResultSet resultSet = statement.executeQuery(sql);while (resultSet.next()) {String bid = resultSet.getString("bid");String bname = resultSet.getString("bname");String author = resultSet.getString("author");double price = resultSet.getDouble("price");String press = resultSet.getString("press");String type = resultSet.getString("type");System.out.print("bid:" + bid + "\t");System.out.print("bname:" + bname + "\t");System.out.print("author:" + author + "\t");System.out.print("price:" + price + "\t");System.out.print("press:" + press + "\t");System.out.println("type:" + type);}resultSet.close();statement.close();connection.close();} catch (Exception e) {e.printStackTrace();}}public void change_data() {Connection connection;Statement statement;Statement statement1;try {Class.forName(className);connection = DriverManager.getConnection(mysqladdress, user, psw);statement1 = connection.createStatement();statement = connection.createStatement();String sql = "select press from book";String sql_professior = "update book set price=price*1.1";ResultSet resultSet = statement.executeQuery(sql);while (resultSet.next()) {String bookname = resultSet.getString("press");if (bookname.equals("清華大學出版社")) {statement1.executeUpdate(sql_professior);}}resultSet.close();statement.close();connection.close();} catch (Exception e) {e.printStackTrace();} finally {show_table();}}public void sort() {Connection connection;Statement statement;try {Class.forName(className);connection = DriverManager.getConnection(mysqladdress, user, psw);statement = connection.createStatement();String sql = "select * from book order by price DESC";ResultSet resultSet = statement.executeQuery(sql);while (resultSet.next()) {String bid = resultSet.getString("bid");String bname = resultSet.getString("bname");String author = resultSet.getString("author");double price = resultSet.getDouble("price");String press = resultSet.getString("press");String type = resultSet.getString("type");System.out.print("bid:" + bid + "\t");System.out.print("bname:" + bname + "\t");System.out.print("author:" + author + "\t");System.out.print("price:" + price + "\t");System.out.print("press:" + press + "\t");System.out.println("type:" + type);}resultSet.close();statement.close();connection.close();} catch (Exception e) {e.printStackTrace();}}public void del() {Connection connection;Statement statement;try {Class.forName(className);connection = DriverManager.getConnection(mysqladdress, user, psw);statement = connection.createStatement();String sql = "delete from book where price<50 ";statement.executeUpdate(sql);connection.close();statement.close();} catch (Exception e) {e.printStackTrace();}show_table();}public void add() {Connection connection;Statement statement;try {Class.forName(className);connection = DriverManager.getConnection(mysqladdress, user, psw);statement = connection.createStatement();String sql = "insert into book(bid,bname,author,price,press,type) values('b00006','數據結構','嚴蔚敏',48,'清華大學出版社','科學類')";statement.executeUpdate(sql);connection.close();statement.close();} catch (Exception e) {e.printStackTrace();}show_table();}public void statistics() {Connection connection;Statement statement;try {Class.forName(className);connection = DriverManager.getConnection(mysqladdress, user, psw);statement = connection.createStatement();String sql = "select * from book where press<(select avg(press) from book);";ResultSet resultSet = statement.executeQuery(sql);while (resultSet.next()) {String bid = resultSet.getString("bid");String bname = resultSet.getString("bname");String author = resultSet.getString("author");double price = resultSet.getDouble("price");String press = resultSet.getString("press");String type = resultSet.getString("type");System.out.print("bid:" + bid + "\t");System.out.print("bname:" + bname + "\t");System.out.print("author:" + author + "\t");System.out.print("price:" + price + "\t");System.out.print("press:" + press + "\t");System.out.println("type:" + type);}resultSet.close();statement.close();connection.close();} catch (Exception e) {e.printStackTrace();}}
}
public class sql {static final String name = "java";static final String psw = "123456";public static void main(String[] args) {DBHelper dbHelper = new DBHelper(name, psw);Scanner scanner = new Scanner(System.in);while (true) {System.out.println("1、打印數據\n2、增加工資\n3、排序\n4、刪除數據\n5、添加數據\n6、篩選數據");int choose = scanner.nextInt();switch (choose) {case 1:dbHelper.show_table();break;case 2:dbHelper.change_data();break;case 3:dbHelper.sort();break;case 4:dbHelper.del();break;case 5:dbHelper.add();break;case 6:dbHelper.statistics();break;}}}
}

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

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

相關文章

國產Type-C PD芯片—接口快充取電芯片

常用USB PDTYPE-C受電端&#xff0c;即設備端協議IC芯片&#xff08;PD Sink&#xff0c;也叫PD誘騙芯片&#xff09;&#xff0c;誘導取電芯片。 產品介紹 LDR6328: ◇ 采用 SOP-8 封裝 ◇ 兼容 USB PD 3.0 規范&#xff0c;支持 USB PD 2.0 ◇ 兼容 QC 3.0 規范&#x…

TailwindCSS 支持文本文字超長溢出截斷、文字文本省略號

前言 文本文字超長截斷并自動補充省略號&#xff0c;這是前端日常開發工作中常用的樣式設置能力&#xff0c;文字超長截斷主要分為單行超長截斷和多行超長截斷。本文通過介紹基本CSS樣式、tailwindcss 類設置兩種基礎方式來實現文字超長截斷。 TailwindCSS 設置 單行文字超長…

WPF仿網易云搭建筆記(2):組件化開發

文章目錄 前言專欄和Gitee倉庫依賴屬性實戰&#xff1a;縮小&#xff0c;全屏&#xff0c;關閉按鈕依賴屬性操作封裝主窗口傳遞this本身給TitleView標題控件主要代碼MainWindow.xmalMainWindow.cs依賴屬性方法封裝TitleView.csTitleViewModelTitleViewModel實現效果 前言 這次…

基于以太坊的智能合約開發Solidity(函數繼承篇)

參考教程&#xff1a;【實戰篇】1、函數重載_嗶哩嗶哩_bilibili 1、函數重載&#xff1a; pragma solidity ^0.5.17;contract overLoadTest {//不帶參數function test() public{}//帶一個參數function test(address account) public{}//參數類型不同&#xff0c;雖然uint160可…

發送、接收消息,界面不及時刷新

發送、接收消息后 UI 沒展示&#xff0c;不及時刷新&#xff0c;大概率 是 SDK 的 UI 刷新功能被干擾&#xff0c;參考下面排查&#xff1a; 檢查 initWithAppkey 和 connectWithToken 使用的是否是 IMKit 核心類 RCIM 的方法&#xff0c;如果不是&#xff0c;請換成 RCIM 的。…

【刷題】位運算

2 n 2^n 2n 1<<n判斷某一位是否為1 s&1<<k將上面兩個組合&#xff0c;可以得到判斷一個集合中哪些內容包含&#xff0c;遍歷所有情況。 100140. 關閉分部的可行集合數目 一個公司在全國有 n 個分部&#xff0c;它們之間有的有道路連接。一開始&#xff0c;…

CentOS 7 離線安裝達夢數據庫8.0

前期準備工作 確認操作系統的版本和數據庫的版本是否一致 ## 查看系統版本&#xff1a;cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core)關閉防火墻和Selinux # 查看selinux是不是disabled / enforce cat /etc/selinux/config## 查看防火墻狀態 firewall-cmd …

數據結構之歸并排序及排序總結

目錄 歸并排序 歸并排序的時間復雜度 排序的穩定性 排序總結 歸并排序 歸并排序大家只需要掌握其遞歸方法即可&#xff0c;非遞歸方法由于在某些特殊場景下邊界難控制&#xff0c;我們一般很少使用非遞歸實現歸并排序。那么歸并排序的遞歸方法我們究竟是怎樣實現呢&#xff…

PHP醫院手術麻醉系統源碼,laravel、vue2 、mysql技術開發,自主知識產權,二開快捷

醫院手術麻醉系統全套源碼&#xff0c;有演示&#xff0c;自主知識產權 技術架構&#xff1a;PHP、 js 、mysql、laravel、vue2 手術麻醉臨床信息管理系統是數字化手段應用于手術過程中的重要組成部分&#xff0c;用數字形式獲取并存儲手術相關信息&#xff0c;既便捷又高效。…

每日一練2023.12.10—— 倒數第N個字符串【PTA】

題目鏈接&#xff1a;L1-050 倒數第N個字符串 題目要求&#xff1a; 給定一個完全由小寫英文字母組成的字符串等差遞增序列&#xff0c;該序列中的每個字符串的長度固定為 L&#xff0c;從 L 個 a 開始&#xff0c;以 1 為步長遞增。例如當 L 為 3 時&#xff0c;序列為 { a…

Qt Creator設置IDE的字體、顏色、主題樣式

Qt是一款開源的、跨平臺的C開發框架&#xff0c;支持Windows、Linux、Mac系統&#xff0c;從1995發布第一版以來&#xff0c;發展迅猛&#xff0c;最開始是用于Nokia手機的Symbian(塞班)系統和應用程序開發&#xff0c;現在是用于嵌入式軟件、桌面軟件(比如WPS、VirtualBox)、A…

【圖論筆記】克魯斯卡爾算法(Kruskal)求最小生成樹

【圖論筆記】克魯斯卡爾算法&#xff08;Kruskal&#xff09;求最小生成樹 適用于 克魯斯卡爾適合用來求邊比較稀疏的圖的最小生成樹 簡記&#xff1a; 將邊按照升序排序&#xff0c;選取n-1條邊&#xff0c;連通n個頂點。 添加一條邊的時候&#xff0c;如何判斷能不能添加…

Python實現PDF-Excel

輕松解決PDF格式轉Excel&#xff08;使用python實現&#xff09; 實現思路&#xff1a; 要將PDF轉換為Excel&#xff0c;可以使用以下步驟&#xff1a; 解析PDF內容&#xff1a;首先&#xff0c;需要使用Python中的第三方庫&#xff08;如PyPDF2、pdfminer等&#xff09;來解…

西南科技大學C++程序設計實驗十二(文件流操作)

一、實驗目的 1. 熟悉文件的基本操作; 2. 在類中添加打開文件、保存文件、讀取文件等處理函數; 二、實驗任務 1. 分析完善程序:主函數創建一個文件對象,每次打開文件,在其尾部添加數據。如果文件不存在,則新建該文件。請將空白處需要完善的功能補充完整。 #include …

mybatis-config.xml的配置

1&#xff1a;MyBatis 的常規配置文件 mybatis-config.xml 包含了對 MyBatis 框架的全局配置&#xff0c;下面是一個常見的示例&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD…

Java代碼重構技巧:提高可維護性和可擴展性

引言&#xff1a; 在軟件開發過程中&#xff0c;代碼重構是一項非常重要的任務。通過對代碼進行重構&#xff0c;可以提高代碼的可維護性和可擴展性&#xff0c;減少代碼的復雜度&#xff0c;增加代碼的可讀性和可測試性。本文將介紹一些常用的Java代碼重構技巧&#xff0c;幫助…

HTML中表格的語法及使用(詳解)

Hi i,m JinXiang ? 前言 ? 本篇文章主要介紹HTML中表格的語法及詳細使用以及部分理論知識 &#x1f349;歡迎點贊 &#x1f44d; 收藏 ?留言評論 &#x1f4dd;私信必回喲&#x1f601; &#x1f349;博主收將持續更新學習記錄獲&#xff0c;友友們有任何問題可以在評論區留…

Java集合框架定義以及整體結構

目錄 一、Java集合框架1.1 什么是java集合框架1.2 集合與數組 二、集合框架具體內容2.1 整體框架2.2 遺留類和遺留接口1.3 集合框架設計特點 參考資料 一、Java集合框架 1.1 什么是java集合框架 Java集合框架&#xff08;Java Collections Framework&#xff09;是Java平臺提…

高云GW1NSR-4C開發板上手使用

1.開發板 核心板&#xff0c;主芯片GW1NSR-LV4CQN48P&#xff0c;絲印文字“奧陶紀Octet&#xff0c;QQ群808770961”&#xff1a; 晶振&#xff1a;27MHz&#xff0c;22引腳 兩個按鍵&#xff1a;靠近中間&#xff0c;23引腳&#xff0c;按下為低電平&#xff1b;靠近外側&…

Flink 讀寫 HBase 總結

前言 總結 Flink 讀寫 HBase 版本 Flink 1.15.4HBase 2.0.2Hudi 0.13.0官方文檔 https://nightlies.apache.org/flink/flink-docs-release-1.17/zh/docs/connectors/table/hbase/ Jar包 https://repo1.maven.org/maven2/org/apache/flink/flink-sql-connector-hbase-2.2/1…