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