Java程序設(shè)計項目案例化教程課件:數(shù)據(jù)庫編程_第1頁
Java程序設(shè)計項目案例化教程課件:數(shù)據(jù)庫編程_第2頁
Java程序設(shè)計項目案例化教程課件:數(shù)據(jù)庫編程_第3頁
Java程序設(shè)計項目案例化教程課件:數(shù)據(jù)庫編程_第4頁
Java程序設(shè)計項目案例化教程課件:數(shù)據(jù)庫編程_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

Java面向?qū)ο蟪绦蛟O(shè)計數(shù)據(jù)庫編程本章內(nèi)容了解什么是JDBC掌握J(rèn)DBC的常用類的使用掌握J(rèn)DBC的編程過程掌握通過JDBC進(jìn)行數(shù)據(jù)庫操作9.1引例異常是用來處理程序錯誤的有效機(jī)制。通過系統(tǒng)拋出的異常,程序可以很容易地捕獲并處理發(fā)生的異常情況。對于一個應(yīng)用軟件,異常處理是不可缺少的。為了說明什么是異常,我們先來看下面的例子。JDBC概述(JDBC驅(qū)動程序)JDBC(JavaDataBaseConnectivity)——java數(shù)據(jù)庫連接,Java語言訪問數(shù)據(jù)庫的一種規(guī)范,是一套API用于執(zhí)行SQL語句的JAVAAPI,由java.sql、javax.sql包組成。它由一組用Java編程語言編寫的類和接口組成,能夠用純JavaAPI來編寫數(shù)據(jù)庫應(yīng)用程序。Java中JDBC驅(qū)動程序有四種。第一種:JDBC-ODBC橋。JDBC-ODBC是一種JDBC驅(qū)動程序,是用于將JDBC中的方法調(diào)用轉(zhuǎn)換成ODBC中相應(yīng)的方法調(diào)用,再通過ODBC訪問數(shù)據(jù)庫。由于微軟推出的ODBC比Sun公司推出JDBC要早,所以絕大多數(shù)的數(shù)據(jù)庫都可以通過ODBC來訪問,當(dāng)Sun公司推出JDBC的時候,為了支持更多的數(shù)據(jù)庫,提供了JDBC-ODBC橋。這樣我們就可以使用JDBC的API通過ODBC去訪問數(shù)據(jù)庫;第二種:本地APIJava驅(qū)動程序。本地API驅(qū)動程序(native-APIpartly-Javadriver),直接將JDBCAPI翻譯成具體數(shù)據(jù)庫的API,將JDBC調(diào)用轉(zhuǎn)換為對數(shù)據(jù)庫的客戶端API的調(diào)用;第三種:JDBC網(wǎng)絡(luò)純Java驅(qū)動程序。Java應(yīng)用程序通過JDBC網(wǎng)絡(luò)純Java驅(qū)動程序?qū)DBC調(diào)用發(fā)送給應(yīng)用程序服務(wù)器,應(yīng)用程序服務(wù)器與數(shù)據(jù)庫完成通信,從而完成請求;第四種:純Java驅(qū)動。Java應(yīng)用程序通過純Java驅(qū)動程序與支持JDBC的數(shù)據(jù)庫直接通信。這方式是效率最高的訪問方式。訪問不同廠商的數(shù)據(jù)庫,需要不同的JDBC驅(qū)動程序。目前,幾個主要的數(shù)據(jù)廠商(Oracle、Microsoft、Sybase等)都提供了對JDBC的支持。Java具有堅固、安全、易于使用、易于理解和可從網(wǎng)絡(luò)上自動下載等特性,是編寫數(shù)據(jù)庫應(yīng)用程序的杰出語言。所需要的只是Java應(yīng)用程序與各種不同數(shù)據(jù)庫之間進(jìn)行對話的方法。而JDBC正是作為此種用途的機(jī)制。應(yīng)用程序、JDBCAPI、數(shù)據(jù)庫驅(qū)動及數(shù)據(jù)庫之間的關(guān)系如下圖所示:圖9.1應(yīng)用程序使用JDBC訪問數(shù)據(jù)庫方式JDBC常用接口和類9.3.2JDBC常用接口和類在JDBC之中的核心組成部分:DriverManager類、Connection接口、Statement接口、PreparedStatement接口、ResultSet接口,即:五個接口一個類,就構(gòu)成了整個JDBC的組成。1、DriverManager類DriverManager類用來管理數(shù)據(jù)庫中的所有驅(qū)動程序;是JDBC的管理層,作用于用戶和驅(qū)動程序之間,跟蹤可用的驅(qū)動程序,并在數(shù)據(jù)庫的驅(qū)動程序之間建立連接。DriverManager通過以下靜態(tài)方法中的一種嘗試從一組已注冊的JDBC驅(qū)動程序中選擇適當(dāng)?shù)尿?qū)動程序:表9.1DriverManager類的方法

publicstaticfinalStringURL="jdbc:mysql://localhost:3306/mydatabase";publicstaticfinalStringUSER="root";publicstaticfinalStringPASSWORD="123456";Connectionconn=DriverManager.getConnection(URL,USER,PASSWORD);方法主要功能getConnection(Stringurl)嘗試建立與給定數(shù)據(jù)庫URL的連接getConnection(Stringurl,Propertiesinfo)嘗試建立與給定數(shù)據(jù)庫URL的連接,info作為連接參數(shù)的任意字符串標(biāo)簽/值對的列表;getConnection(Stringurl,Stringuser,Stringpassword)嘗試建立與給定數(shù)據(jù)庫URL的連接,user正在連接的數(shù)據(jù)庫用戶,password用戶密碼Connection接口Connection接口代表與特定的數(shù)據(jù)庫連接,在連接上下文中執(zhí)行SQL語句并返回結(jié)果。下面表中是Connection的常用的方法:表9.2Connection常用方法Connectionconn=DriverManager.getConnection(URL,USER,PASSWORD);Statementstmt=conn.createStatement();方法主要功能void()Connection發(fā)布此Connection對象的數(shù)據(jù)庫和JDBC資源,而不是等待它們自動釋放。()創(chuàng)建一個Statement對象,用于將SQL語句發(fā)送到數(shù)據(jù)庫。PreparedStatementprepareStatement(Stringsql)創(chuàng)建一個PreparedStatement對象,用于將參數(shù)化的SQL語句發(fā)送到數(shù)據(jù)庫。Statement接口Statement接口用于在已經(jīng)建立連接的基礎(chǔ)上向數(shù)據(jù)庫發(fā)送SQL語句。在JDBC中有3中Statement對象,分別是Statement、PreparedStatement和CallableStatement。Statement對象用于執(zhí)行不帶參數(shù)的簡單的SQL語句;PreparedStatement繼承了Statement,用來執(zhí)行動態(tài)的SQL語句;CallableStatement繼承了PreparedStatement,用來執(zhí)行數(shù)據(jù)庫的存儲過程的調(diào)用。下面表中是Statement的常用的方法:表9.3Statement常用的方法Statementstmt=conn.createStatement();ResultSetrs=stmt.executeQuery("select*fromuserOne");PreparedStatment接口PreparedStatement可以對SQL語句進(jìn)行預(yù)編譯,并且可以存儲在PreparedStatement對象中,當(dāng)多次執(zhí)行SQL語句時可以提高效率,并可以提高安全性防止惡意SQL表9.4PreparedStatement的常用方法方法主要功能ResultSetexecuteQuery(Stringsql)執(zhí)行給定的SQL語句,該語句返回單個ResultSet對象intexecuteUpdate(Stringsql)執(zhí)行給定的SQL語句,這可能是INSERT,UPDATE,或DELETE語句,或者不返回任何內(nèi)容,如SQLDDL語句的SQL語句close()Statement對象的數(shù)據(jù)庫和JDBC資源,而不是等待它自動關(guān)閉時發(fā)生。stmt.executeUpdate("insert

into

tb_name

(c1,c2,c3)

values

('"+v1+"','"+v2+"',"+v3+"')");

perstmt

=

con.prepareStatement("insert

into

tb_name

(col1,col2,col3)

values

(?,?,?)");

perstmt.setString(1,var1);

perstmt.setString(2,var2);

perstmt.setString(3,var3);

perstmt.executeUpdate();

方法主要功能ResultSetexecuteQuery()執(zhí)行此PreparedStatement對象中的SQL查詢,并返回查詢PreparedStatement的ResultSet對象intexecuteUpdate()執(zhí)行在該SQL語句PreparedStatement對象,它必須是一個SQL數(shù)據(jù)操縱語言(DML)語句,如INSERT,UPDATE或DELETE;或不返回任何內(nèi)容的SQL語句,例如DDL語句close()PreparedStatement對象的數(shù)據(jù)庫和JDBC資源,而不是等待它自動關(guān)閉時發(fā)生。ResultSet接口類似于一個臨時表,用來暫時存放數(shù)據(jù)庫查詢操作所獲得的結(jié)果集。ResultSet實例具有指向當(dāng)前數(shù)據(jù)行的指針,指針開始的位置在第一條記錄的前面,通過next()方法可將指針向下移。下面表中是ResultSet的常用的方法:表9.5ResultSet的常用方法ResultSetrs=stmt.executeQuery("select*fromuserOne");while(rs.next()){ System.out.println(rs.getString(1));}rs.close();ResultSet接口方法主要功能boolean

next()將光標(biāo)從當(dāng)前位置向前移動一行g(shù)etString(intcolumnIndex)這個檢索的當(dāng)前行中指定列的值ResultSet對象為String的Java編程語言getString(StringcolumnLabel)這個檢索的當(dāng)前行中指定列的值ResultSet對象為String的Java編程語言close()ResultSet釋放此ResultSet對象的數(shù)據(jù)庫和JDBC資源,而不是等待其自動關(guān)閉時發(fā)生。JDBC編程步驟通過JDBC為多種關(guān)系數(shù)據(jù)庫提供統(tǒng)一訪問,它由一組用Java語言編寫的類和接口組成。JDBC提供了一種基準(zhǔn),據(jù)此可以構(gòu)建更高級的工具和接口,使數(shù)據(jù)庫開發(fā)人員能夠編寫數(shù)據(jù)庫應(yīng)用程序。闡述JDBC編程步驟以java程序如何連接MySQL數(shù)據(jù)庫的為例。下面主要介紹JDBC連接MySQL數(shù)據(jù)庫操作的步驟。在使用JDBC編程之前,要做的就是安裝MySQL數(shù)據(jù)庫,設(shè)置用戶名為:root,設(shè)置密碼為:123456,再建立數(shù)據(jù)庫mydatabase,之后再在mydatabase數(shù)據(jù)庫下建立表student,作為本章所有案例使用。表9.6student中的字段表9.7student中的內(nèi)容字段名類型長度能否為空主鍵IDint8否是Namevarchar10否

sexchar1否

majorvarchar20否

phoneint13能

Emailvarchar30能IDNamesexmajorphoneEmail20180101趙錦毫男電子學(xué)與信息系統(tǒng)1556545645fsgdrs@163.com20180102趙業(yè)超男計算機(jī)軟件1756454534sdrgs@20180103陳泊芝女計算機(jī)及應(yīng)用1434534435zgsdg@163.com20180104趙廣然男礦物巖石材料學(xué)1437878678szdgs@20180105李馨漫女微電子學(xué)1463874546shgfgd@163.com20180106趙強(qiáng)男電子學(xué)與信息系統(tǒng)1378548784xgh@20180107趙誠晨男礦物巖石材料學(xué)1297868976sthfgb@163.com20180108李長白男計算機(jī)軟件1310786745strghgh@20180109陳泊依女計算機(jī)軟件1767832428tgwstj@20180110王洋平男微電子學(xué)1437652344jhjrer@20180111王顯茹女微電子學(xué)1438573237weyji@163.com20180112李風(fēng)念男電子學(xué)與信息系統(tǒng)1437837425fgj@20180113趙麗凡女礦物巖石材料學(xué)1742377824iop@20180114王白詩女計算機(jī)軟件1786378324etwt@20180115李雄繼男計算機(jī)軟件1475327836wrtwju@163.com20180116王哲男計算機(jī)軟件1327853847hcvkf@163.com20180117李茹倩女計算機(jī)及應(yīng)用1727487338suijg@163.com20180118王雅騰女礦物巖石材料學(xué)1483742788glkbm@20180119趙婉嫻女計算機(jī)軟件1723778786dhsty@20180120王中齊男電子學(xué)與信息系統(tǒng)1893438963ikdjyn@JDBC驅(qū)動程序JDBC驅(qū)動是JDBCAPI接口的具體實現(xiàn),不同數(shù)據(jù)庫的實現(xiàn)細(xì)節(jié)不同。驅(qū)動類型(四種類型),一般優(yōu)先使用純Java的驅(qū)動,已獲得更好的效率。這些是各個數(shù)據(jù)庫廠家根據(jù)JDBC的規(guī)范制作的JDBC實現(xiàn)類各種數(shù)據(jù)庫的驅(qū)動類名如下:表9.6部分?jǐn)?shù)據(jù)庫的驅(qū)動類名數(shù)據(jù)庫驅(qū)動程序包名驅(qū)動類的名字JDBCURLSQLServermsbase.jarmssqlserver.jarmsutil.jarcom.microsoft.jdbc.sqlserver.SQLServerDriverjdbc:microsoft:sqlserver://localhost:1433;DatabaseName=dbnameOracleojdbc14.jaroracle.jdbc.driver.OracleDriverjdbc:oracle:thin:@:1521:dbnameMySQLmysql-connector-java-3.1.11-bin.jarcom.mysql.jdbc.Driverjdbc:mysql://localhost:3306/mydb在注冊JDBC之前首先一定要導(dǎo)入驅(qū)動類的架包,例如注冊JDBC驅(qū)動程序連接MySQL數(shù)據(jù)庫之前要導(dǎo)入驅(qū)動類的架包:mysql-connector-java-3.1.11-bin.jar在java里面任何class都要裝載在虛擬機(jī)上才能運行。這句話就是裝載類用的。Class.forName(name);name是一個字符串,而這個字符串也就是要注冊JDBC驅(qū)動程序連接的數(shù)據(jù)庫的驅(qū)動類的名字。例如注冊JDBC驅(qū)動程序連接MySQL數(shù)據(jù)庫Class.forName("com.mysql.jdbc.Driver");注冊JDBC驅(qū)動程序連接數(shù)據(jù)庫和數(shù)據(jù)庫建立連接通過DriverManager取得Connection對象之后,實際上就表示數(shù)據(jù)庫連接上了,連接上數(shù)據(jù)庫就可以進(jìn)行數(shù)據(jù)庫的更新及查詢操作,但是操作完成之后,數(shù)據(jù)庫連接也必須要關(guān)閉。例如下面使用Java中JDBC與MySQL數(shù)據(jù)庫連接:publicstaticfinalStringDBURL="jdbc:mysql://localhost:3306/mydatabase";Connectionconn=DriverManager.getConnection(DBURL,"username","password");創(chuàng)建執(zhí)行SQL對象與執(zhí)行語句(發(fā)送SQL語句)通過連接對象Connection獲取可以執(zhí)行sql語句的對象Statement,然后創(chuàng)建執(zhí)行SQL的對象Statement。Statementstmt=conn.createStatement();ResultSetrs=stmt.executeQuery(sql);//參數(shù)為sql語句通過連接對象Connection獲取已創(chuàng)建SQL語句的對象PreparedStatement,然后執(zhí)行SQL語句。PreparedStatmentps=conn.prepareStatement(sql);//參數(shù)為sql語句ResultSetrs=ps.executeQuery();處理數(shù)據(jù)庫返回的結(jié)果ResultSet接口通常用于保存數(shù)據(jù)庫的結(jié)果集 ResultSetrs=stm.executeQuery(查詢語句);表9.7ResultSet的常用方法方法主要功能next()將指針從當(dāng)前位置向下移一行g(shù)etInt(intcolumnIndex)columnIndex是字段的序號,第一個字段(列)是1,第二個字段(列)是2getInt(columnName)columnName是字段名稱注:查詢后ResultSet的默認(rèn)當(dāng)前位置是0行,如果要將當(dāng)前位置移到第一行則要調(diào)用一下next()方法; publicvoidselect(){ try{ ResultSetrs=stmt.executeQuery("select*fromstudent"); while(rs.next()){ System.out.print(rs.getInt("ID")+"\t"); System.out.print(rs.getString("Name")); System.out.println(); } }catch(SQLExceptione){ System.out.println("數(shù)據(jù)庫訪問錯誤"+e); } }釋放資源(關(guān)閉連接)。publicstaticvoidcloseConnection(ResultSetrs,Statementstmt,Connectioncon){try{ if(rs!=null){ rs.close();} if(stmt!=null){ stmt.close(); } if(con!=null){ con.close(); } }catch(SQLExceptione){ e.printStackTrace();}}【例9-1】:通過案例來掌握使用JDBC完成數(shù)據(jù)庫編程步驟。importjava.sql.*;publicclassDemo9_01{ publicstaticfinalStringDBDRIVER="com.mysql.jdbc.Driver";publicstaticfinalStringDBURL="jdbc:mysql://localhost:3306/mydatabase"+"?characterEncoding=utf8&useSSL=true";publicstaticfinalStringDBUSER="root";publicstaticfinalStringPASSWORD="123456";publicstaticvoidmain(String[]args)throwsException{Connectionconn=null;//每一個Connection對象表示一個數(shù)據(jù)庫連接Statementstmt=null;//數(shù)據(jù)庫操作對象Class.forName(DBDRIVER);//加載驅(qū)動程序conn=DriverManager.getConnection(DBURL,DBUSER,PASSWORD); stmt=conn.createStatement();//找到Statement接口對象 Stringsql="SELECT*FROMstudentwheresex='女'"; ResultSetrs=stmt.executeQuery(sql);//查詢 System.out.println("學(xué)號 姓名 性別 專業(yè) "+"電話 Email"); while(rs.next()){ intid=rs.getInt("ID"); Stringname=rs.getString("Name"); Stringsex=rs.getString("sex"); Stringmajor=rs.getString("major"); intphone=rs.getInt("phone"); Stringemail=rs.getString("Email"); System.out.println(+id+""+name+" " +sex+""+major+""+phone+" "+email); } rs.close(); stmt.close();//關(guān)閉操作,如果不關(guān)閉操作,關(guān)閉連接也是一樣的 conn.close();//關(guān)閉連接 }}程序運行結(jié)果:JDBC-ODBC編程步驟講完使用JDBC完成MySQL數(shù)據(jù)庫編程步驟,我們來講一下使用JDBC-ODBC完成MySQL數(shù)據(jù)庫編程步驟。通過JDBC-ODBC連接Mysql數(shù)據(jù)庫,與JDBC直接連接數(shù)據(jù)庫差異不大。下面主要介紹JDBC-ODBC連接MySQL數(shù)據(jù)庫操作的步驟。打開控制面板下的管理工具中的odbc數(shù)據(jù)源(根據(jù)數(shù)據(jù)庫安裝的不同,選擇32位ODBC數(shù)據(jù)源或64位ODBC數(shù)據(jù)源),如圖9.1所示:再用戶DSN下點擊添加,如圖9.2所示:之后選擇:MySQLODBC8.0ANSIDriver,點擊完成,如圖9.3所示:看見用戶DSN中有MySQL,點擊確定按鈕,如圖9.4所示注冊JDBC-ODBC驅(qū)動程序為:sun.jdbc.odbc.JdbcOdbcDriver,也只能使用這一種驅(qū)動程序。注冊JDBC-ODBC驅(qū)動程序連接數(shù)據(jù)庫與JDBC連接數(shù)據(jù)庫一樣使用的是Class.forName(name);而不同的是name這個字符串。JDBC連接數(shù)據(jù)庫的這個字符串也就是要注冊JDBC驅(qū)動程序連接的數(shù)據(jù)庫的驅(qū)動類的名字,而JDBC-ODBC連接數(shù)據(jù)庫的這個字符串只能使用一種:sun.jdbc.odbc.JdbcOdbcDriver。Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");注冊驅(qū)動(注冊JDBC-ODBC驅(qū)動程序連接數(shù)據(jù)庫)JDBC-ODBC連接數(shù)據(jù)庫也是通過DriverManager取得Connection對象之后,不同的是連接使用的URL,JDBC連接數(shù)據(jù)庫使用的URL是根據(jù)連接的數(shù)據(jù)庫不同使用的URL也不同,而JDBC-ODBC連接數(shù)據(jù)庫使用的URL:jdbc:odbc:MySQL,URL中的MySQL就是上面的DataSourceName。例如下面使用Java中JDBC-ODBC與MySQL數(shù)據(jù)庫連接:publicstaticfinalStringDBURL="jdbc:odbc:MySQL";Connectionconn=DriverManager.getConnection(DBURL,"username","password");JDBC-ODBC連接數(shù)據(jù)庫后面的步驟與JDBC連接數(shù)據(jù)庫后面的步驟基本相同。和數(shù)據(jù)庫建立連接【例9-2】:通過案例來掌握使用JDBC-ODBC完成數(shù)據(jù)庫編程步驟。importjava.sql.*;publicclassDemo9_02{ publicstaticfinalStringDBDRIVER="sun.jdbc.odbc.JdbcOdbcDriver"; publicstaticfinalStringDBURL="jdbc:odbc:MySQL"; publicstaticfinalStringDBUSER="root"; publicstaticfinalStringPASSWORD="123456"; publicstaticvoidmain(String[]args)throwsException{ Connectionconn=null;//每一個Connection對象表示一個數(shù)據(jù)庫連接 Statementstmt=null;//數(shù)據(jù)庫操作對象 Class.forName(DBDRIVER);//加載驅(qū)動程序 conn=DriverManager.getConnection(DBURL,DBUSER,PASSWORD); stmt=conn.createStatement();//找到Statement接口對象 Stringsql="SELECT*FROMstudentwheresex='男'"; ResultSetrs=stmt.executeQuery(sql);//查詢 System.out.println("學(xué)號" +"姓名" +"性別" +"專業(yè)" +"電話" +"Email"); while(rs.next()){ intid=rs.getInt("ID"); Stringname=rs.getString("Name"); Stringsex=rs.getString("sex"); Stringmajor=rs.getString("major"); intphone=rs.getInt("phone"); Stringemail=rs.getString("Email"); System.out.println(+id+""+name+"" +sex+""+major+""+phone+""+email); } rs.close(); stmt.close();//關(guān)閉操作,如果不關(guān)閉操作,關(guān)閉連接也是一樣的 conn.close();//關(guān)閉連接 }}程序運行結(jié)果:JDBC數(shù)據(jù)庫操作(查詢操作)查詢應(yīng)該返回數(shù)據(jù)給用戶瀏覽,所以在整個進(jìn)行查詢的操作之中,就必須有一種結(jié)構(gòu),可以裝下整個的查詢結(jié)果,而這個結(jié)構(gòu)就使用ResultSet表示。當(dāng)所有的記錄返回到ResultSet的時候,所有的內(nèi)容都是按照數(shù)據(jù)類型存放的,所以用戶只需要按照數(shù)據(jù)類型一行行的取出數(shù)據(jù)即可。【例9-3】:通過案例來掌握使用ResultSet取出數(shù)據(jù)importjava.sql.*;publicclassDemo9_03{ publicstaticfinalStringDBDRIVER="com.mysql.jdbc.Driver";publicstaticfinalStringDBURL="jdbc:mysql://localhost:3306/mydatabase" +"?characterEncoding=utf8&useSSL=true";publicstaticfinalStringDBUSER="root";publicstaticfinalStringPASSWORD="123456";publicstaticvoidmain(String[]args)throwsException{Connectionconn=null;Statementstmt=null;Class.forName(DBDRIVER);conn=DriverManager.getConnection(DBURL,DBUSER,PASSWORD); stmt=conn.createStatement(); Stringsql="SELECT*FROMstudentwheresex='男'"; ResultSetrs=stmt.executeQuery(sql); System.out.println("學(xué)號 姓名 性別 專業(yè) " +"電話 Email"); while(rs.next()){ intid=rs.getInt("ID"); Stringname=rs.getString("Name"); Stringsex=rs.getString("sex"); Stringmajor=rs.getString("major"); intphone=rs.getInt("phone"); Stringemail=rs.getString("Email"); System.out.println(+id+""+name+" " +sex+""+major+""+phone+" "+email); } rs.close(); stmt.close(); conn.close(); }}該程序的運行結(jié)果:在數(shù)據(jù)的更新操作之中,如果已經(jīng)成功的執(zhí)行了數(shù)據(jù)的更新,一定會返回更新的行數(shù)的。如果要想執(zhí)行數(shù)據(jù)表操作在Java之中可以使用Statement接口完成,但是如果要想取得Statement接口對象的話,必須依靠Connection接口完成,通過Connection接口中定義的了executeUpdate(Stringsql)方法完成更新、添加和刪除操作。更新、添加和刪除操作【例9-4】:通過案例掌握數(shù)據(jù)庫表的數(shù)據(jù)插入操作。SQL語法:INSERTINTO表名稱(字段,字段,..)VALUES(值,值,…):importjava.sql.*;publicclassDemo9_04{

publicstaticfinalStringDBDRIVER="com.mysql.jdbc.Driver";publicstaticfinalStringDBURL="jdbc:mysql://localhost:3306/mydatabase" +"?characterEncoding=utf8&useSSL=true";publicstaticfinalStringDBUSER="root";publicstaticfinalStringPASSWORD="123456";publicstaticvoidmain(String[]args)throwsException{Connectionconn=null;Statementstmt=null;Class.forName(DBDRIVER);conn=DriverManager.getConnection(DBURL,DBUSER,PASSWORD);

stmt=conn.createStatement(); Stringsql="INSERTINTOstudent(Name,sex,major,phone,Email)" +"VALUES('蕭風(fēng)','男','計算機(jī)及應(yīng)用',1327853456,'gdszr@')";

intnum=stmt.executeUpdate(sql); System.out.println("更新行數(shù):"+num);

stmt.close();

conn.close(); }}

該程序的運行結(jié)果:【例9-6】:通過案例掌握數(shù)據(jù)庫表的刪除操作。SQL語法:DELETEFROM

表名稱

WHERE

刪除條件

;importjava.sql.*;publicclassDemo9_06{ publicstaticfinalStringDBDRIVER="com.mysql.jdbc.Driver";publicstaticfinalStringDBURL="jdbc:mysql://localhost:3306/mydatabase" +"?characterEncoding=utf8&useSSL=true";publicstaticfinalStringDBUSER="root";publicstaticfinalStringPASSWORD="123456";publicstaticvoidmain(String[]args)throwsException{Connectionconn=null;Statementstmt=null;Class.forName(DBDRIVER);conn=DriverManager.getConnection(DBURL,DBUSER,PASSWORD); stmt=conn.createStatement();Stringsql="DELETEFROMstudentWHEREid=20180115";intnum=stmt.executeUpdate(sql);System.out.println("更新行數(shù):"

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論