日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

JAVA数据库编程(JDBC技术)-入门笔记

發(fā)布時間:2025/3/21 数据库 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JAVA数据库编程(JDBC技术)-入门笔记 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
本菜鳥才介入Java,我現(xiàn)在不急著去看那些基本的語法或者一些Java里面的版本的特征或者是一些晉級的知識,因為有一點.Net的OOP編程思想,所以對于Java的這些語法以及什么的在用到的時候在去發(fā)現(xiàn)學(xué)習(xí)一下。我現(xiàn)在很迫不及待用JAVA想來實現(xiàn)以下對數(shù)據(jù)庫的增刪改查。想實現(xiàn)就來看Java是怎么操作數(shù)據(jù)庫的,回想下.Net里你可能會配置web.Config,或者你去寫一些DBhelper類然后調(diào)用里面的自己定義的一些增刪改查的方法,更或者你去配一些數(shù)據(jù)控件等等往往發(fā)現(xiàn)操作基本都是一體化的簡單。現(xiàn)在面對Java呢? JDBC技術(shù) 百度簡介 : ?JDBC(Java Data Base Connectivity,java數(shù)據(jù)庫連接)是一種用于執(zhí)行SQL語句的Java API,可以為多種關(guān)系數(shù)據(jù)庫提供統(tǒng)一訪問,它由一組用Java語言編寫的類和接口組成。JDBC提供了一種基準(zhǔn),據(jù)此可以構(gòu)建更高級的工具和接口,使數(shù)據(jù)庫開發(fā)人員能夠編寫數(shù)據(jù)庫應(yīng)用程序。 JDBC并不能直接訪問數(shù)據(jù)庫,需要借助于數(shù)據(jù)庫廠商提供的JDBC驅(qū)動程序。 JDBC中常用的類和接口可用于我們編程開發(fā),利用這些類和接口可以方便的經(jīng)行數(shù)據(jù)訪問和處理。這些類和接口都位于java.sal包中。具體的下面一一揭曉~~ 廢話一堆后,其實這些廢話都可以去百度找到的有木有發(fā)現(xiàn)百度很強(qiáng)大,很犀利,很友好,很無敵啊~~~~扯遠(yuǎn)了。。。。下面開始JDBC的旅途. 數(shù)據(jù)庫連接 如果要在Java訪問數(shù)據(jù)庫,首先要加載一個數(shù)據(jù)庫驅(qū)動,數(shù)據(jù)庫驅(qū)動只需要在第一次訪問時加載一次。然后再每次訪問數(shù)據(jù)庫時創(chuàng)建一個Connection實例,獲取數(shù)據(jù)庫連接,這樣就可以執(zhí)行操作數(shù)據(jù)庫的SQL語句。最后用完后釋放掉數(shù)據(jù)庫的連接。 數(shù)據(jù)庫驅(qū)動類 不同的數(shù)據(jù)庫實現(xiàn)JDBC接口不同,所以就產(chǎn)生了不同的數(shù)據(jù)庫驅(qū)動包。驅(qū)動包就包含一些負(fù)責(zé)數(shù)據(jù)庫連接的類,把我們要操作的SQL語句傳遞到里面去。因為我上班的PC用的是SQL2012,所以我們要去這里http://www.microsoft.com/zh-cn/search/DownloadResults.aspx?q=jdbc下載下面的驅(qū)動: 可能會有人說為什么下這個呢怎么不是下面的3.0或者2.0的驅(qū)動呢!因為我的SQL版本是2012的所以下載這個,如果你是2008或者2005的話你就可以下載下面的3.0驅(qū)動包!說這么多在不明白就點進(jìn)去看下: 看明白就去下載適合自己SQL版本的驅(qū)動吧! 加載數(shù)據(jù)庫驅(qū)動類 Java加載數(shù)據(jù)庫驅(qū)動的方法是調(diào)用Class類的靜態(tài)方法forName().寫法如下: 1 Class.forName(String driveManager); forName()方法的參數(shù)用于指定要加載的數(shù)據(jù)庫驅(qū)動。加載成功,將會加載驅(qū)動類注冊給DriveManager.失敗的話拋出ClassNotFoundExecption異常。 在扯一點沒必要的閑話:為了把程序的出錯性盡量的排斥掉,我可不希望我第一次用Java的JDBC就出一堆的錯誤,然后對在學(xué)者去用工具然后跳錯。因為操作的是我PC本地的SQL12數(shù)據(jù)庫,我準(zhǔn)備一切都用默認(rèn)(端口)的東西試試先。所以我們要開始就啟動我們SQL網(wǎng)絡(luò)配置協(xié)議TCP/IP設(shè)置為啟動,當(dāng)然已經(jīng)啟動的話就沒必要在此去啟動啦! 連接SQL2012數(shù)據(jù)庫 把我們剛才下的驅(qū)動加載到 MyEclipse中來,如下: 好萌的東西,像個牛奶瓶o(^▽^)o。 下面開始我們SQL2012的數(shù)據(jù)連接操作: package myJava.jdbc; import java.sql.*; public class SelectQuery { Connection conn; ? ?? //創(chuàng)建一個返回值為Connection的方法 public Connection getConnection(){ try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); System.out.println("數(shù)據(jù)庫驅(qū)動加載成功"); conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=DB_ShowData","sa","123456"); if(conn!=null){ System.out.println("數(shù)據(jù)庫連接成功"); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } //返回Connection對象 return conn; } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub SelectQuery getcon = new ?SelectQuery(); getcon.getConnection(); } } 運行結(jié)果如下: 看到這個應(yīng)該算是一路順風(fēng)吧!沒出什么異常,然后我們趁熱打鐵連接成功啦查詢一下有何不可,我搞一個很簡單的查詢具體代碼如下: package myJava.jdbc; import java.sql.*; public class SelectQuery { Connection conn; ? ?? //創(chuàng)建一個返回值為Connection的方法 public Connection getConnection(){ try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); System.out.println("數(shù)據(jù)庫驅(qū)動加載成功"); conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=DB_ShowData","sa","123456"); if(conn!=null){ System.out.println("數(shù)據(jù)庫連接成功"); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } //返回Connection對象 return conn; } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub SelectQuery getcon = new ?SelectQuery(); getcon.getConnection(); //查詢 String sql = "SELECT * FROM [dbo].[User]"; try { PreparedStatement Ps = getcon.conn.prepareStatement(sql); ResultSet Rs = Ps.executeQuery(); while(Rs.next()){ String name = Rs.getString("Name"); String password = Rs.getString("Password"); System.out.println(name); System.out.println(password); } Rs.close(); Ps.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } 運行結(jié)果如下: 結(jié)果出來啦o(^▽^)o不是重點,重點是這個查詢里面我們都用到了JDBC技術(shù)中的那些類和接口,或許你看了上面的代碼還是茫然我說的是和我一樣入門的人,那么下面的解釋后,你就懂得啦! 首先是我們在getConnection中用到的 DriverManager類 DriverManager類是用來管理數(shù)據(jù)庫中所有的驅(qū)動程序,是JDBC的管理層,作用用戶和驅(qū)動程序之間,并在數(shù)據(jù)庫的驅(qū)動之間建立連接。DriverManager類中的方法都是靜態(tài)方法,所以用的時候不需要實例化,直接調(diào)用類名就可以。 DriverManager類的常用方法如下: 方法 功能 getConnection(String url,String user,String password) 指定3個參數(shù),連接數(shù)據(jù)庫的url,數(shù)據(jù)庫用戶名,數(shù)據(jù)庫密碼 setLoginTimeout() 獲取驅(qū)動程序試圖登錄到某一個數(shù)據(jù)庫時可以等待的最長時間 printIn(String Message) 將一條消息打印到當(dāng)前JDBC日志流中 其次我們看到就是Connection接口 Connection接口代表與特定的數(shù)據(jù)庫的連接。要對數(shù)據(jù)表中的數(shù)據(jù)經(jīng)行操作,首先要獲取數(shù)據(jù)庫連接。 Connection接口常用的方法如下: 方法 功能 createStatement() 創(chuàng)建Statement對象 createStatement(int resultSetType,int resultSetConcurrency) 創(chuàng)建一個Statement對象,該對象將生產(chǎn)具有給定類型,并發(fā)性和可保存性的ResultSet對象 prepareStatement() 創(chuàng)建預(yù)處理對象PreparedStatement isReadOnly() 查看當(dāng)前的Connection對象的讀取模式是否為之讀形式 setReadOnly() 設(shè)置當(dāng)前Connection對象的讀寫模式i,默認(rèn)是非只讀模式 commit() 使所有上一次提交,回滾后進(jìn)行的更改成為持久更改 roolback() 取消再當(dāng)前事物中經(jīng)行的所有更改,并釋放此Connection對象當(dāng)前持有的所有數(shù)據(jù)庫鎖 close() 立即釋放Connection對象數(shù)據(jù)庫和JDBC資源 PreparedStatement接口 PreparedStatement接口繼承Statemetn接口,用于執(zhí)行動態(tài)的SQL語句,通過PreparedStatement實例執(zhí)行SQL語句,將被預(yù)編譯并保存到PreparedStatement實例中,從而可以反復(fù)的執(zhí)行SQL語句。可以通過Connection類的prepareStatement()方法獲取PreparedStatement對象。PreparedStatement接口常用的方法: 方法 功能描述 execute() 在此PreparedStatement對象中執(zhí)行SQL語句,該語句可以是任何類型的SQL語句 executeQuery() 在此PreparedStatement對象中SQL查詢語句,返回結(jié)果為查詢結(jié)果集ResultSet對象 executeUpadte() 在此PreparedStatement對象中執(zhí)行SQL語句,該SQL語句必須是個INSET,UPDATE,DELETE語句,或者返回沒有返回值的DDl語句 setByte(int pIndex,byte bt) 將參數(shù)pIndex位置上設(shè)置為給定的byte型參數(shù)值bt setDouble(int pIndex,double dou) 將參數(shù)pIndex位置上設(shè)置為給定的double型參數(shù)值dou setInt(int pInde,int x) 將參數(shù)pIndex位置上設(shè)置為給定的int型參數(shù)值x setObject(int pIndex,Object o) 將參數(shù)pIndex位置上設(shè)置為給定的Object型參數(shù)值o setString(int pIndex,String str) 將參數(shù)pIndex位置上設(shè)置為給定的String型參數(shù)值str ResultSet接口 ResultSet接口類似一張數(shù)據(jù)表,用來暫時存放數(shù)據(jù)庫查詢操作獲得的結(jié)果集。ResultSet實例具有指向當(dāng)前數(shù)據(jù)行的指定,指針開始的位置在查詢的結(jié)果集第一條記錄的前面。在獲取查詢結(jié)果集時,可通過next()方法將指針向下移動。如果存在下一行,還方法返回true,否則返回false. 方法 功能 getInt() 以intt形式獲取ResultSet對象的當(dāng)前行的指定值 getFloat() 以float形式獲取ResultSet對象的當(dāng)前行的指定值 getDate() 以Data形式獲取ResultSet對象的當(dāng)前行的指定值 getBoolean() 以boolean形式獲取ResultSet對象的當(dāng)前行的指定值 getString() 以String形式獲取ResultSet對象的當(dāng)前行的指定值 getObject() 以O(shè)bject形式獲取ResultSet對象的當(dāng)前行的指定值 frist() 將指針移到當(dāng)前記錄的第一行 last() 將指針移到當(dāng)前記錄的最后一行 next() 將指針下移一行 beforeFirst() 將指針移到集合的開頭 afterLast() 將指針移到集合的尾部 absolute(int index) 將指針一到ResultSet指定編號的行 inFist() 判斷指針是否位于當(dāng)前ResultSet集合的第一行 isLast() 判斷指針是否位于當(dāng)前ResultSet集合的最后一行 updateInt() 用指定的int值更新指定列 upadateFloat() 用指定的float值更新指定列 updateLong() 用指定的Long值更新指定列 updateString() 用String值更新指定列 updateObject() 用Object值更新指定列 updateNull() 將指定列的值改為NULL updateDate() 用指定的Date值更新指定列 updateDouble() 用指定的double值更新指定列 getRow() 查看當(dāng)前的索引號 insertRow() 將插入行的內(nèi)容插入到數(shù)據(jù)庫 updateRow() 將當(dāng)前行的內(nèi)容同步到數(shù)據(jù)庫 deleteRow() 刪除當(dāng)前行,但不同步到數(shù)據(jù)庫中,在執(zhí)行close()方法后同步到數(shù)據(jù)庫中

總結(jié)

以上是生活随笔為你收集整理的JAVA数据库编程(JDBC技术)-入门笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久免费视频播放 | 国产极品美女高潮无套嗷嗷叫酒店 | 欧美激情在线免费观看 | 欧美日韩激情视频在线观看 | 高清久久久久久 | 日韩女优在线播放 | 老熟女重囗味hdxx69 | 精品人妻无码专区视频 | 日韩精品123 | av手机天堂网 | 成人在线视频免费 | 欧美jizz19性欧美 | 96看片 | 美女一区二区三区视频 | 欧美精产国品一二三区 | 性做久久久久久久 | 黑帮大佬和我的三百六十五天 | 欧美精品videosex极品 | 免费看成人毛片 | 亚洲最新在线观看 | 精品一区二区免费 | 窝窝视频在线 | 亚洲欧美成人综合 | 麻豆福利视频 | 国产成人免费在线视频 | 亚洲一区二区激情 | 最新色网站| 嫩草嫩草嫩草嫩草嫩草 | 国产精品成人69xxx免费视频 | 黄色一级网站 | 91香蕉在线视频 | 日韩欧美电影一区二区三区 | 日韩有码第一页 | 少妇高潮一区二区三区99 | 这里只有精品视频在线 | 久久艹艹| 亚洲喷潮| 国产乱仑 | 在线观看三区 | 久久久精品国产免费爽爽爽 | 日韩三级在线 | 国产一区在线播放 | 在线午夜av | 欧美伦理一区二区三区 | 成人毛片av | 精品裸体舞一区二区三区 | 99久久黄色 | 人妻无码一区二区三区久久 | 国产欧美在线观看视频 | 免费日本黄色网址 | 国产a√精品区二区三区四区 | 人人妻人人澡人人爽精品 | 国内自拍欧美 | 亚洲国产日韩在线观看 | 久久国产精品一区二区 | 又黄又爽视频 | 亚洲少妇30p | 欧美在线一| av撸撸在线| 91偷拍网站 | 狼人久久 | 欧美黑粗大 | 国产一级网站 | 亚洲大尺度视频 | 国产精品一区二区性色av | 麻豆天天躁天天揉揉av | 国产裸体美女永久免费无遮挡 | 亚洲精品性 | 国产乱人伦精品一区二区 | 精品人妻一区二区乱码 | 1区2区视频 | 女同亚洲精品一区二区三 | 成人免费视 | wwww在线观看 | 国产xxxxx | 亚洲欧洲综合在线 | 丝袜美腿亚洲综合 | 青草视频网 | 女人十八毛片嫩草av | 天天操操操 | 欧美激情va永久在线播放 | 自拍偷拍亚洲一区 | 欧美一级爽aaaaa大片 | 一级片日韩 | 女人18岁毛片 | 欧美性猛交xxxⅹ富婆 | 蘑菇福利视频一区播放 | 亚洲另类一区二区 | 天天色图片| 福利第一页 | 四虎精品一区 | 国产精品99久久久久久人 | jiuse九色 | 黑人玩弄人妻一区二区三区免费看 | 依人成人综合网 | 成人欧美视频 | 这里精品 | 欧美变态另类刺激 | 99久久精品免费看国产免费软件 |