狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频

當前位置:系統之家 > 技術開發教程 > 詳細頁面

JDBC連接數據庫經驗技巧

JDBC連接數據庫經驗技巧

更新時間:2020-01-02 文章作者:未知 信息來源:網絡 閱讀次數:

Java數據庫連接(JDBC)由一組用 Java 編程語言編寫的類和接口組成。JDBC 為工具/數據庫開發人員提供了一個標準的 API,使他們能夠用純Java API 來編寫數據庫應用程序。然而各個開發商的接口并不完全相同,所以開發環境的變化會帶來一定的配置變化。本文主要集合了不同數據庫的連接方式。

  一、連接各種數據庫方式速查表

  下面羅列了各種數據庫使用JDBC連接的方式,可以作為一個手冊使用。

  1、Oracle8/8i/9i數據庫(thin模式)

  Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
  String url="jdbc:oracle:thin:@localhost:1521:orcl"; //orcl為數據庫的SID
  String user="test";
  String password="test";
  Connection conn= DriverManager.getConnection(url,user,password);

  2、DB2數據庫

  Class.forName("com.ibm.db2.jdbc.app.DB2Driver ").newInstance();
  String url="jdbc:db2://localhost:5000/sample"; //sample為你的數據庫名
  String user="admin";
  String password="";
  Connection conn= DriverManager.getConnection(url,user,password);

  3、Sql Server7.0/2000數據庫

  Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
  String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb";
  //mydb為數據庫
  String user="sa";
  String password="";
  Connection conn= DriverManager.getConnection(url,user,password);

  4、Sybase數據庫

  Class.forName("com.sybase.jdbc.SybDriver").newInstance();
  String url =" jdbc:sybase:Tds:localhost:5007/myDB";//myDB為你的數據庫名
  Properties sysProps = System.getProperties();
  SysProps.put("user","userid");
  SysProps.put("password","user_password");
  Connection conn= DriverManager.getConnection(url, SysProps);

  5、Informix數據庫

  Class.forName("com.informix.jdbc.IfxDriver").newInstance();
  String url = "jdbc:informix-sqli://123.45.67.89:1533/myDB:INFORMIXSERVER=myserver;
  user=testuser;password=testpassword"; //myDB為數據庫名
  Connection conn= DriverManager.getConnection(url);

  6、MySQL數據庫

  Class.forName("org.gjt.mm.mysql.Driver").newInstance();
  String url ="jdbc:mysql://localhost/myDB?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1"
  //myDB為數據庫名
  Connection conn= DriverManager.getConnection(url);

  7、PostgreSQL數據庫

  Class.forName("org.postgresql.Driver").newInstance();
  String url ="jdbc:postgresql://localhost/myDB" //myDB為數據庫名
  String user="myuser";
  String password="mypassword";
  Connection conn= DriverManager.getConnection(url,user,password);

  8、access數據庫直連用ODBC的

  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver") ;
  String url="jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ="+application.getRealPath("/Data/ReportDemo.mdb");
  Connection conn = DriverManager.getConnection(url,"","");
  Statement stmtNew=conn.createStatement() ;

  二、JDBC連接MySql方式

  下面是使用JDBC連接MySql的一個小的教程

  1、查找驅動程序

  MySQL目前提供的java驅動程序為Connection/J,可以從MySQL官方網站下載,并找到mysql-connector-java-3.0.15-ga-bin.jar文件,此驅動程序為純java驅動程序,不需做其他配置。

  2、動態指定classpath

  如果需要執行時動態指定classpath,就在執行時采用-cp方式。否則將上面的.jar文件加入到classpath環境變量中。

  3、加載驅動程序

  try{
  Class.forName(com.mysql.jdbc.Driver);
  System.out.println(Success loading Mysql Driver!);
  }catch(Exception e)
  {
  System.out.println(Error loading Mysql Driver!);
  e.printStackTrace();
  }

  4、設置連接的url

  jdbc:mysql://localhost/databasename[?pa=va][&pa=va]

   三、以下列出了在使用JDBC來連接Oracle數據庫時可以使用的一些技巧

  1、在客戶端軟件開發中使用Thin驅動程序

  在開發Java軟件方面,Oracle的數據庫提供了四種類型的驅動程序,二種用于應用軟件、applets、servlets等客戶端軟件,另外二種用于數據庫中的Java存儲過程等服務器端軟件。在客戶機端軟件的開發中,我們可以選擇OCI驅動程序或Thin驅動程序。OCI驅動程序利用Java本地化接口(JNI),通過Oracle客戶端軟件與數據庫進行通訊。Thin驅動程序是純Java驅動程序,它直接與數據庫進行通訊。為了獲得最高的性能,Oracle建議在客戶端軟件的開發中使用OCI驅動程序,這似乎是正確的。但我建議使用Thin驅動程序,因為通過多次測試發現,在通常情況下,Thin驅動程序的性能都超過了OCI驅動程序。

  2、關閉自動提交功能,提高系統性能

  在第一次建立與數據庫的連接時,在缺省情況下,連接是在自動提交模式下的。為了獲得更好的性能,可以通過調用帶布爾值false參數的Connection類的setAutoCommit()方法關閉自動提交功能,如下所示:

  conn.setAutoCommit(false);

  值得注意的是,一旦關閉了自動提交功能,我們就需要通過調用Connection類的commit()和rollback()方法來人工的方式對事務進行管理。

  3、在動態SQL或有時間限制的命令中使用Statement對象

  在執行SQL命令時,我們有二種選擇:可以使用PreparedStatement對象,也可以使用Statement對象。無論多少次地使用同一個SQL命令,PreparedStatement都只對它解析和編譯一次。當使用Statement對象時,每次執行一個SQL命令時,都會對它進行解析和編譯。這可能會使你認為,使用PreparedStatement對象比使用Statement對象的速度更快。然而,我進行的測試表明,在客戶端軟件中,情況并非如此。因此,在有時間限制的SQL操作中,除非成批地處理SQL命令,我們應當考慮使用Statement對象。

  此外,使用Statement對象也使得編寫動態SQL命令更加簡單,因為我們可以將字符串連接在一起,建立一個有效的SQL命令。因此,我認為,Statement對象可以使動態SQL命令的創建和執行變得更加簡單。

  4、利用helper函數對動態SQL命令進行格式化

  在創建使用Statement對象執行的動態SQL命令時,我們需要處理一些格式化方面的問題。例如,如果我們想創建一個將名字O'Reilly插入表中的SQL命令,則必須使用二個相連的“''”號替換O'Reilly中的“'”號。完成這些工作的最好的方法是創建一個完成替換操作的helper方法,然后在連接字符串心服用公式表達一個SQL命令時,使用創建的helper方法。與此類似的是,我們可以讓helper方法接受一個Date型的值,然后讓它輸出基于Oracle的to_date()函數的字符串表達式。

  5、利用PreparedStatement對象提高數據庫的總體效率

  在使用PreparedStatement對象執行SQL命令時,命令被數據庫進行解析和編譯,然后被放到命令緩沖區。然后,每當執行同一個PreparedStatement對象時,它就會被再解析一次,但不會被再次編譯。在緩沖區中可以發現預編譯的命令,并且可以重新使用。在有大量用戶的企業級應用軟件中,經常會重復執行相同的SQL命令,使用PreparedStatement對象帶來的編譯次數的減少能夠提高數據庫的總體性能。如果不是在客戶端創建、預備、執行PreparedStatement任務需要的時間長于Statement任務,我會建議在除動態SQL命令之外的所有情況下使用PreparedStatement對象。

  6、在成批處理重復的插入或更新操作中使用PreparedStatement對象

  如果成批地處理插入和更新操作,就能夠顯著地減少它們所需要的時間。Oracle提供的Statement和 CallableStatement并不真正地支持批處理,只有PreparedStatement對象才真正地支持批處理。我們可以使用addBatch()和executeBatch()方法選擇標準的JDBC批處理,或者通過利用PreparedStatement對象的setExecuteBatch()方法和標準的executeUpdate()方法選擇速度更快的Oracle專有的方法。要使用Oracle專有的批處理機制,可以以如下所示的方式調用setExecuteBatch():

  PreparedStatement pstmt3D null;
  try {
  ((OraclePreparedStatement)pstmt).setExecuteBatch(30);
  ...
  pstmt.executeUpdate();
  }

  調用setExecuteBatch()時指定的值是一個上限,當達到該值時,就會自動地引發SQL命令執行,標準的executeUpdate()方法就會被作為批處理送到數據庫中。我們可以通過調用PreparedStatement類的sendBatch()方法隨時傳輸批處理任務。

  7、使用Oracle locator方法插入、更新大對象(LOB)

  Oracle的PreparedStatement類不完全支持BLOB和CLOB等大對象的處理,尤其是Thin驅動程序不支持利用PreparedStatement對象的setObject()和setBinaryStream()方法設置BLOB的值,也不支持利用setCharacterStream()方法設置CLOB的值。只有locator本身中的方法才能夠從數據庫中獲取LOB類型的值。可以使用PreparedStatement對象插入或更新LOB,但需要使用locator才能獲取LOB的值。由于存在這二個問題,因此,我建議使用locator的方法來插入、更新或獲取LOB的值。

  8、使用SQL92語法調用存儲過程

  在調用存儲過程時,我們可以使用SQL92或Oracle PL/SQL,由于使用Oracle PL/SQL并沒有什么實際的好處,而且會給以后維護你的應用程序的開發人員帶來麻煩,因此,我建議在調用存儲過程時使用SQL92。

  9、使用Object SQL將對象模式轉移到數據庫中

  既然可以將Oracle的數據庫作為一種面向對象的數據庫來使用,就可以考慮將應用程序中的面向對象模式轉到數據庫中。目前的方法是創建Java bean作為偽裝的數據庫對象,將它們的屬性映射到關系表中,然后在這些bean中添加方法。盡管這樣作在Java中沒有什么問題,但由于操作都是在數據庫之外進行的,因此其他訪問數據庫的應用軟件無法利用對象模式。如果利用Oracle的面向對象的技術,可以通過創建一個新的數據庫對象類型在數據庫中模仿其數據和操作,然后使用JPublisher等工具生成自己的Java bean類。如果使用這種方式,不但Java應用程序可以使用應用軟件的對象模式,其他需要共享你的應用中的數據和操作的應用軟件也可以使用應用軟件中的對象模式。

  10、利用SQL完成數據庫內的操作

  我要向大家介紹的最重要的經驗是充分利用SQL的面向集合的方法來解決數據庫處理需求,而不是使用Java等過程化的編程語言。

  如果編程人員要在一個表中查找許多行,結果中的每個行都會查找其他表中的數據,最后,編程人員創建了獨立的UPDATE命令來成批地更新第一個表中的數據。與此類似的任務可以通過在set子句中使用多列子查詢而在一個UPDATE命令中完成。當能夠在單一的SQL命令中完成任務,何必要讓數據在網上流來流去的?我建議用戶認真學習如何最大限度地發揮SQL的功能。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频
国产日韩亚洲欧美精品| 日韩欧美色综合| 在线精品亚洲| 国产精品jizz在线观看美国 | 亚洲成人7777| 一区二区三区不卡在线观看| 亚洲欧美日韩综合aⅴ视频| 国产精品久久久久久久蜜臀| 亚洲欧洲精品一区二区三区不卡| 成人免费在线播放视频| 中文字幕在线不卡一区二区三区| 91香蕉视频mp4| 一区二区精品在线| 精品国产免费一区二区三区香蕉 | 欧美在线日韩精品| 欧美激情综合色综合啪啪| 伊人久久成人| 亚洲一区日韩在线| 每日更新成人在线视频| 色婷婷激情综合| 欧美精选一区二区| 久久综合九色综合97婷婷| 亚洲欧洲三级电影| 亚洲v精品v日韩v欧美v专区| 麻豆精品在线看| 国产91在线观看| 午夜免费电影一区在线观看| 中文字幕一区二区不卡| 蜜桃免费网站一区二区三区| 国产欧美日韩一区二区三区| 国产乱码精品一品二品| 欧美bbbbb| 99热这里都是精品| 亚洲麻豆av| 蜜臀av性久久久久蜜臀av麻豆| 顶级嫩模精品视频在线看| 色伊人久久综合中文字幕| 国产一区二区在线观看免费播放| www.欧美精品一二区| 日韩天堂av| 欧美日韩精品二区第二页| 国产欧美日韩视频在线观看| 亚洲国产欧美日韩另类综合| 国产老女人精品毛片久久| 欧美日韩一区二| 在线视频国内自拍亚洲视频| 国产香蕉久久精品综合网| 亚洲va中文字幕| 99v久久综合狠狠综合久久| 国产精品一级| 精品久久久久久久一区二区蜜臀| 亚洲精品日产精品乱码不卡| 国产一区二区三区不卡在线观看| 国产自产在线视频一区| 老司机午夜精品99久久| 一区二区三区精品国产| 中文字幕一区免费在线观看| 欧美日韩专区| 欧美国产亚洲另类动漫| 国内欧美视频一区二区| 亚洲久久一区二区| 精品成人佐山爱一区二区| 成人午夜视频在线观看| 亚洲成人在线| 精品国产免费人成在线观看| 丝袜诱惑亚洲看片| 亚洲欧美一级二级三级| 欧美久久久久免费| 亚洲午夜激情网页| 9久草视频在线视频精品| 久久综合九色综合网站| 国产精品丝袜久久久久久app| 国内国产精品久久| 午夜亚洲影视| 亚洲色图.com| 色综合色狠狠综合色| 欧美日韩久久久| 日本亚洲一区二区| 在线免费观看一区二区三区| 精品久久一区二区| 久久er99热精品一区二区| 香港久久久电影| 亚洲精品视频在线观看免费| 99久久伊人精品| 日韩丝袜美女视频| 国产在线播放一区二区三区| 色国产综合视频| 婷婷开心激情综合| 国产精品久久久久久久久婷婷| 国产精品久久久久久久久图文区| 国产成人精品午夜视频免费| 欧美日韩国产精品成人| 蜜臀av一区二区在线观看| 久久婷婷国产综合尤物精品| 亚洲一二三四区| 99视频一区| 亚洲黄一区二区三区| 悠悠资源网久久精品| 中文字幕在线观看一区二区| 欧美久久电影| 国产精品久久久久久久久免费相片| 91一区一区三区| 欧美激情一二三区| 国模精品娜娜一二三区| 欧美国产欧美综合| 国内成+人亚洲| 亚洲日本欧美天堂| 国产精品美女黄网| 午夜精品久久久久久久| 色综合久久66| 国产在线观看一区二区| 7777精品伊人久久久大香线蕉最新版| 久久爱www久久做| 日韩欧美国产成人一区二区| av成人老司机| **欧美大码日韩| 欧美亚洲一级| 久99久精品视频免费观看| 91精品国产综合久久久蜜臀粉嫩 | 99热这里只有精品8| 一区二区不卡在线播放| 色国产综合视频| 国产麻豆9l精品三级站| 久久久久国产精品厨房| av成人黄色| 麻豆久久久久久| 2021中文字幕一区亚洲| 亚洲福利免费| 一区在线视频观看| 日本女优在线视频一区二区| 欧美韩日一区二区三区四区| 欧美日韩国产三级| 国产精品你懂的在线欣赏| 91蝌蚪porny| 岛国精品一区二区| 中文字幕欧美国产| 久久成人麻豆午夜电影| 国产精品综合色区在线观看| 国产精品456| 日韩中文字幕av电影| 国产精品国产自产拍高清av| 亚洲成人av在线电影| 国产亚洲综合性久久久影院| 欧美乱熟臀69xxxxxx| 久久先锋资源| 亚洲看片网站| 欧美日韩亚洲免费| 91在线丨porny丨国产| 国产精品一区二区久久精品爱涩 | 久久久福利视频| 亚洲激情啪啪| 国产精品激情电影| 欧美一区不卡| 91蝌蚪国产九色| www.亚洲色图.com| 成人动漫在线一区| 国产馆精品极品| 国产精品 欧美精品| 国产一区二三区| 老司机精品视频一区二区三区| 天天操天天干天天综合网| 一区二区三区av电影| 成人免费在线视频| 亚洲欧洲日产国码二区| 国产精品女同一区二区三区| 国产无一区二区| 国产区在线观看成人精品| 国产亚洲欧美一级| 国产午夜亚洲精品羞羞网站| 国产女人aaa级久久久级| 国产日韩欧美麻豆| 欧美激情一区二区三区四区| 国产午夜精品久久| 国产欧美久久久精品影院| 日本一区二区成人在线| 国产精品久久一卡二卡| 亚洲视频综合在线| 一区二区日韩av| 偷拍日韩校园综合在线| 蜜臀av性久久久久av蜜臀妖精 | 日韩精品一区二区在线| www国产亚洲精品久久麻豆| 久久久久久影视| 亚洲人精品午夜| 亚洲.国产.中文慕字在线| 丝袜诱惑制服诱惑色一区在线观看| 日本在线不卡一区| 黑人巨大精品欧美一区| 福利一区二区在线| 午夜久久99| 亚洲欧美国产不卡| 欧美日韩卡一卡二| www成人在线观看| 国产精品久久影院| 五月开心婷婷久久| 国产成人免费视| 国产一区二区三区自拍| 久久精品国产清高在天天线 | 欧美午夜免费| 久久亚洲国产精品一区二区 |