日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

JDBC作用接口和创建的步骤详细解析

發布時間:2023/12/10 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JDBC作用接口和创建的步骤详细解析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

JDBC

1.DCL(介紹)

1.1創建用戶:

CREATE?USER?'用戶名'@'主機名'?IDENTIFIED?BY?'密碼'; 關鍵字說明:
? ? 1.?`用戶名`:將創建的用戶名 ??

??? 2.?`主機名`:指定該用戶在哪個主機上可以登陸,如果是本地用戶可用localhost,如果想讓該用戶可以從任意遠程 主機登陸,可以使用通配符% ??

??? 3.?`密碼`:該用戶的登陸密碼,密碼可以為空,如果為空則該用戶可以不需要密碼登陸服務器

具體的操作:

-- 1.創建用戶 identified by 為用戶設置密碼 -- user1用戶只能在localhost這個IP登錄mysql服務器 CREATE?USER?'user1'@'localhost'?IDENTIFIED?BY?'123'; ‐‐?user2用戶可以在任何電腦上登錄mysql服務器 CREATE?USER?'user2'@'%'?IDENTIFIED?BY?'123';

1.2授權用戶

授權格式:GRANT?權限1,?權限2...?ON?數據庫名.表名?TO?'用戶名'@'主機名'; 關鍵字說明.

? 1.?`GRANT`?授權關鍵字 ?

? 2.?授予用戶的權限,如`SELECT`,`INSERT`,`UPDATE`等。如果要授予所的權限則使用`ALL` ??

? 3.?`數據庫名.表名`:該用戶可以操作哪個數據庫的哪些表。如果要授予該用戶對所有數據庫和表的相應操作權限則 可用*表示,如`*.*` ??

? 4.?`'用戶名'@'主機名'`:?給哪個用戶授權

具體的操作:

1.1給luliang用戶分配對test這個數據庫操作的權限

GRANT CREATE,ALTER,DROP,INSERT,UPDATE,DELETE,SELECT ON test.* TO 'luliang'@'localhost';

1.2給luliang用戶分配對所有的數據庫操作的權限。

CRANT ALL ON *.* TO 'luliang'@'localhost';

1.3撤銷授權

REVOKE?ALL?ON?test.*?FROM?'user1'@'localhost';

具體操作:

撤銷luliang用戶對test操作的權限。

REVOKE ALL ON test.*FROM 'luliang'@'localhost';

1.4查看權限

SHOW?GRANTS?FOR?'用戶名'@'主機名';

查看luiang用戶的權限

SHOW GREATS FOR 'luliang'@'localhost';

1.5刪除用戶

DROP?USER?'用戶名'@'主機名';

具體的操作:

DROP USER 'luliang'@'localhost';

1.6修改用戶名

修改管理員密碼

mysqladmin?-uroot?-p?password?新密碼?--?新密碼不需要加上引號

注意:需要在未登錄MySql的情況下的操作

具體操作:

mysqlamdin -uroot -p password 123456

輸入老密碼

1.7修改普通用戶密碼

set password for 'luliang'@'localhost'=password('666666');

JDBC處理MysSQL中的用戶:

JDBC的概念:

JDBC:是有Sun公司提供的一套的規范的(接口),由一推數據。

客戶端操作MySQL數據庫的方式

1. 使用第三方客戶端來訪問MySQL:SQLyog、Navicat、SQLWave、MyDB Studio、EMS SQL Manager for MySQL

2. 使用MySQL自帶的命令行方式

3. 通過Java來訪問MySQL數據庫,

什么是JDBCJava?Data?Base?Connectivity (Java數據庫連接) JDBC是Java訪問數據庫的 標準規范

JDBC的作用JDBC是用于執行SQL語句的Java API(Java語言通過JDBC可以操作數據庫)

JDBC的由來:

jdbc的好處;

建立與數據庫的連接。
向數據庫發起查詢請求。
處理數據庫返回結果。?

JDBC的快速入門:

步驟:

1.注冊驅動

2.獲取連接

3.創建SQL執行平臺

4.執行SQL語句

5.處理結果

6.釋放資源

代碼演示:

package com.luliang.JDBC;import org.junit.Test; import java.sql.*; public class Demo01 {@Testpublic void select() throws Exception {//1.注冊驅動/*1. 注冊驅動任意數據庫的類都是java.sql.Driver的實現類,要注冊的也是接口的實現類記住:MySql的驅動類名是:com.mysql.jdbc.Driver如何注冊:不推薦的方式:DriverManager.registerDriver(new com.mysql.jdbc.Driver());有問題:注冊了2次硬編碼問題推薦的方式:Class.forName("com.mysql.jdbc.Driver"); 把指定名稱的類加載到JVM內存中本質是使用了反射技術*/Class.forName("com.mysql.jdbc.Driver");//2.獲取連接/*2.獲取連接連接對象:java.sql.Connection如何獲取連接對象:DriverManager.getConnection(url, username, password)url:數據庫連接地址。JDBC規定了url的寫法 由三部分組成,三部分之間使用英文冒號連接第一部分:協議名,固定值jdbc第二部分:子協議,通常是數據庫的類型,比如:MySql的寫法是mysql第三部分:數據庫的具體地址,由數據庫廠商自行決定的,不同數據庫的寫法不同。MySql的寫法://數據庫的ip:數據庫的端口/database的名稱 比如://192.168.18.18:3306/heima63連接本機、默認端口的MySql,可以簡寫成:///heima63username:數據庫的登錄名password:數據庫的密碼*/Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/lu", "root", "root");//3.創建SQL執行平臺/*3.創建SQL執行平臺SQL執行平臺:是JDBC規范提供了,專門用來執行SQL語句的一個對象 java.sql.Statement獲取的方式:connection.createStatement()*/Statement statement = connection.createStatement();//4.執行SQL語句/*執行SQL語句執行DQL語句:statement.executeQuery(sql),返回:ResultSet,查詢的結果集DQL:查詢數據1.查詢所有的數據:select*from 表明2.查詢指定的列:select 字段1,字段2,..from 表名;3.查詢處理null值:select if null (字段,默認值) from 表名;4.查詢并計算:select 字段1+字段2,.....from 表面;執行DML語句:statement.executeUpdate(sql),返回:int,表示影響的行數執行任意語句:statement.execute(sql),返回:boolean, 如果執行的是查詢,返回true;否則返回false*/ResultSet resultSet = statement.executeQuery("SELECT *FROM emp ");//int resultSet = statement.executeUpdate("INSERT INTO student4(id,name,price) VALUES (NULL ,'luliang2',1000000)"); //返回值為://5.處理結果while (resultSet.next()){String name = resultSet.getString("name");String gender = resultSet.getString("gender");double salary = resultSet.getDouble("salary");Date join_date = resultSet.getDate("join_date");int dept_id = resultSet.getInt("dept_id");System.out.println("姓名:"+name+", 工資:"+salary+", 年齡:"+join_date+", 學號:"+dept_id+",性別:"+gender);}//System.out.println("影響行數:" + resultSet);//6.釋放資源//釋放資源。順序:ResultSet=>Statement=>ConnectionresultSet.close();statement.close();connection.close();} }

next用法:

JDBC常用的API

Connection接口:

package com.luliang.lianxi;import com.luliang.JDBCbao.JdbcUtils; import com.luliang.JDBCbao.JdbcUtils1;import java.sql.Connection; import java.sql.Statement;/* 面試題: 什么時候,需要把 setAtuoCommit設為 false? 答: 當有多個dml 同時執行,將其看做一個整體提交,則使用 事務管理 , 則需要把 setAutoCommit 設為false;*/ public class Demo05 {public static void main(String[] args) throws Exception{//1.加載驅動,獲取連接Connection connection = JdbcUtils1.getConnection();//2.開啟事務把事務設置不自動提交connection.setAutoCommit(true);//設置這個不自動提交事務就是數據庫的數據沒有影響//3.創建sql對象(Statement / PreparedStatement /CallableStatement)Statement statement = connection.createStatement();//4.通過statement向數據庫發出sql命令//對emp表進行操作: 把SMITH 的sal -10 給 KING sal+10int i = statement.executeUpdate("UPDATE emp SET salary=salary+10000 WHERE NAME ='孫悟空'");System.out.println("影響的行數:"+i);//5.關閉資源statement.close();connection.close();} }

當有多個dml 同時執行,將其看做一個整體提交,則使用 事務管理 ,則需要把 setAutoCommit 設為false;

Statement接口和PreparedStatement的區別

后者的效率比前者高,在使用PreparedStatement對象執行SQL命令時,命令被數據庫進行編譯和解析,然后被放到命令緩沖區,然后,每當執行同一個PreparedStatement對象時,它就會被解析一次,但不會被再次編譯。在緩沖區中可以返現預編譯的命令,并且可以重新使用。如果insert、update、delete ,最好使用PreparedStatement,在有大量用戶的企業級應用軟件中,經常會重復執行相同的SQL命令,使用PreparedStatement對象帶來的編譯次數的減少能夠提高數據庫的總體性能。

ResuilSet接口:

說明:在默認的情況下,我們的rs結果集,只能向前移動,這樣rs結果就不能復用,如果希望復用,則可以這樣做:

package com.luliang.lianxi;import com.luliang.JDBCbao.JdbcUtils1;import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement;/* ResultSet 的可選項有: resultSetType - 結果集類型, 它是 ResultSet.TYPE_FORWARD_ONLY、 ResultSet.TYPE_SCROLL_INSENSITIVE 或 ResultSet.TYPE_SCROLL_SENSITIVE 之一 resultSetConcurrency - 并發類型; 它是 ResultSet.CONCUR_READ_ONLY 或 ResultSet.CONCUR_UPDATABLE 之一*/ public class Demo07 {public static void main(String[] args) throws Exception{//查詢//1.注冊驅動,獲取連接Connection connection = JdbcUtils1.getConnection();//2,創建SQL執行平臺Statement statement = connection.createStatement();//執行SQL語句//假設我們希望resultSet結果,可以滾動(可以向前,也可以向后)ResultSet resultSet = statement.executeQuery("SELECT *FROM emp");while (resultSet.next()){System.out.println(resultSet.getString("name"));}System.out.println("---------------");resultSet.beforeFirst();while (resultSet.next()){System.out.println(resultSet.getString("name"));}} }

JDBC的增刪改查:

增:代碼演示

package com.luliang.lianxi;import com.luliang.JDBCbao.JdbcUtils; import com.luliang.JDBCbao.JdbcUtils1;import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement; //插入 public class Demo02 {public static void main(String[] args) {Connection connertion = null;try {connertion = JdbcUtils1.getConnection();} catch (Exception e) {e.printStackTrace();}//創建SQL執行的平臺Statement statement = null;try {statement = connertion.createStatement();} catch (SQLException e) {e.printStackTrace();}//執行SQL語句//執行DML語句:statement.executeUpdate(sql),返回值:int,表示影響的行數try {int i = statement.executeUpdate("INSERT INTO product1(id,pname,price)VALUES (null,'陸良1',100000.00)");System.out.println("處理結果:"+i);} catch (SQLException e) {e.printStackTrace();}try {statement.close();} catch (SQLException e) {e.printStackTrace();}try {connertion.close();} catch (SQLException e) {e.printStackTrace();}} }

刪:代碼演示

package com.luliang.lianxi;import com.luliang.JDBCbao.JdbcUtils;import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement;//刪除 public class Demo04 {public static void main(String[] args) {Connection connertion = JdbcUtils.getConnertion();//創建SQL執行平臺Statement statement=null;try {statement = connertion.createStatement();//執行SQL語句// 執行DML語句:statement.executeUpdate(sql),返回值:int,表示影響的行數int i = statement.executeUpdate("DELETE FROM product1 WHERE id=5");//處理SQL語句System.out.println("執行后的結果:"+i);//關閉資源流statement.close();} catch (SQLException e) {e.printStackTrace();}finally {try {connertion.close();} catch (SQLException e) {e.printStackTrace();}}} }

改:代碼演示

package com.luliang.lianxi;import com.luliang.JDBCbao.JdbcUtils;import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement;//修改 public class Demo03 {public static void main(String[] args) {Connection connertion = JdbcUtils.getConnertion();Statement statement = null;//創建SQL平臺try {statement = connertion.createStatement();//執行SQL語句int i = statement.executeUpdate("UPDATE product1 SET price=price+10000 WHERE id=1 ");System.out.println("執行影響后的:"+i);} catch (SQLException e) {e.printStackTrace();}finally {try {statement.close();} catch (SQLException e) {e.printStackTrace();}try {connertion.close();} catch (SQLException e) {e.printStackTrace();}}} }

查:

package com.luliang.lianxi;import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement;//查詢 public class Demo01 {public static void main(String[] args) throws Exception{//注冊驅動Class.forName("com.mysql.jdbc.Driver");//獲取連接Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/javaee","root","root");//創建SQL執行平臺Statement statement = connection.createStatement();//執行SQL語句//執行DQL語句:statement.executeQuery(sql),返回值:ResultSet,是查詢的結果集對象ResultSet resultSet = statement.executeQuery("SELECT *FROM employee");//處理結果while (resultSet.next()){System.out.println("id:"+resultSet.getInt("id")+",姓名:"+resultSet.getString("name")+", 密碼:"+resultSet.getString("PASSWORD"));}//釋放資源resultSet.close();statement.close();connection.close();} }

JDBC的工具類封裝:

==JDBC的事務管理==

?事務管理相關的API

?事務管理的方法,都是由Connection對象提供的:

  • 開啟事務:connection.setAutoCommit(false)

  • 提交事務:connection.commit()

  • 回滾事務:connection.rollback()

事務管理的步驟:

try{//1.注冊驅動//2.獲取連接//===開啟事務=== 只要在執行SQL之前開啟即可//3.創建SQL執行平臺//4.執行SQL語句//5.處理結果//===關閉事務:提交事務=== 只要在釋放資源之前,關閉事務即可 }catch(Exception e){//===關閉事務:回滾事務=== }finally{//6.釋放資源 }

JDBC的實現登錄案例:

分析:

1.使用數據庫保存的用戶的賬號和密碼

2.讓用戶輸入賬號和密碼

3.使用SQL根據用戶的賬號和密碼去數據庫查詢數據

4.如果查詢到數據,說明登錄失敗。

代碼演示:

package com.luliang.DengLu; import com.luliang.JDBCbao.JdbcUtils1; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import java.util.Scanner; /* 1. 使用數據庫保存用戶的賬號和密碼 2. 讓用戶輸入賬號和密碼 3. 使用SQL根據用戶的賬號和密碼去數據庫查詢數據 4. 如果查詢到數據,說明登錄成功 5. 如果查詢不到數據,說明登錄失敗*/ public class Demo01 {public static void main(String[] args) throws Exception{//1.編寫代碼讓用戶輸入Scanner scanner = new Scanner(System.in);System.out.println("請你輸入用戶名:");String name = scanner.nextLine();System.out.println("請你輸入密碼:");String password=scanner.nextLine();//2.使用SQL根據用戶的賬號和密碼去數據庫查詢數據//2.1注冊驅動,獲取連接Connection connection = JdbcUtils1.getConnection();//2.2創建SQL執行平臺Statement statement = connection.createStatement();//2.3執行SQL語句String resultSet1="SELECT *FROM user WHERE name='"+name+"' AND password='"+password+"'";//?如果查詢到數據,說明登錄成功,如果查詢不到數據,說明登錄失敗ResultSet resultSet = statement.executeQuery(resultSet1);//判斷if(resultSet.next()){//能進來查詢到了數據String pname = resultSet.getString("name");System.out.println("歡迎你登陸:"+pname);}else {//查詢不到數據,說明登陸失敗System.out.println("賬號密碼錯誤....");}//關閉資源流resultSet.close();statement.close();connection.close();} }

?

總結

以上是生活随笔為你收集整理的JDBC作用接口和创建的步骤详细解析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。