1. 程式人生 > >7種資料庫連線的方式

7種資料庫連線的方式

1、Oracle8/8i/9i資料庫(thin模式) 


  Class.forName("oracle.jdbc.driver.OracleDriver"); 


  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為資料庫名 


        //使用MySQL資料庫驅動
        <jndi-name>MySQLDB</jndi-name>
        <connection-url>jdbc:mysql://localhost:3306/dbname</connection-url>
        <driver-class>com.mysql.jdbc.Driver</driver-class>
        <user-name>user</user-name>
        <password>pass</password>




  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);










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); 


















 一、連線各種資料庫方式速查表
下面羅列了各種資料庫使用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() ;
















MySQL高階特性----對比與其他資料庫  
 
 
效能 


  對於速度的真實比較,以及不斷成熟的MySQL基準套件。見10.8 使用你自己的基準。因為沒有執行緒建立開銷、一個較小的語法分析器、較少功能和簡單的安全性,mSQL應該在下列方面更快些:
  執行重複的連線和斷開的測試,在每個連線期間執行一個非常簡單的查詢。 
  有很少的列和鍵的插入很簡單的表的INSERT操作。 
  CREATE TABLE和DROP TABLE。 
  在不是一個索引的一些東西上SELECT。(一個表掃描是很容易的。) 
  因為這些操作是如此簡單,當你有更高的啟動開銷時,很難在這些方面變得更好。在連線被建立以後,MySQL應該效能好一些。在另一方面,MySQL比mSQL(以及大多數其他的SQL實現)在下列方面更好些:
  
  複雜的SELECT操作


  檢索較大的結果(MySQL有一個更好、更快並且更安全的協議)。 
  有變長字串的表,因為MySQL有更有效的並可在VARCHAR列上索引。 
  有很多列的表的處理。 
  由長記錄的表的處理。 
  有很多許多表達式的SELECT。 
  在大表上的SELECT。 
  同時處理很多連線。MySQL充分是完全多執行緒化的,每個連線有它自己的執行緒,這意味著沒有執行緒必須等待另一個執行緒(除非一個執行緒正在修改一張表,另外的執行緒想要存取)在mSQL中,一旦一個連線被建立了,所有其它執行緒必須等到第一個執行緒完成,不管連線正在執行的查詢是短的或是長的。當第一個連線終止時,下一個才能工作,而此時所有其它執行緒再次等待,等等。 
  
  聯結。如果你改變一個SELECT中的表的順序,mSQL可能變得異常地慢。在基準套件中,比MySQL要慢超過15000倍的時間。這是由於mSQL缺乏一個聯結優化器以便以最佳的順序排定表。然而,如果你把表按完全正確的順序放在mSQL2中並且WHERE是很簡單的並使用索引列,聯結將相對快些!見10.8 使用你自己的基準。 
  ORDER BY和GROUP BY。 
  DISTINCT。 
  使用TEXT或BLOB列。 
  
  SQL功能 


  GROUP BY和HAVING。mSQL根本不支援GROUP BY。MySQL支援一個有兩個HAVING和下列函式: COUNT()、AVG()、MIN()、MAX()、SUM()和STD()的完整的GROUP BY。如果SELECT從一張表中檢索,沒有其他列被檢索並且沒有WHERE子句,COUNT(*)被優化以很快地返回。 MIN()和MAX()可以取字串引數。 
  帶計算的INSERT和UPDATE。MySQL能在一個INSERT或UPDATE中做計算。例如:
  mysql> UPDATE SET x=x*10+y WHERE x<20;
  
  別名,MySQL有列的別名。 
  限制列名。在MySQL中,如果一個列名在用於查詢的表之間唯一的,你不必須使用完整的 合格者。 
  帶函式的SELECT。MySQL有很多函式(太多不能在這裡列出;見7.4 用在SELECT和WHERE子句中的函式)。
   
  磁碟空間效率 


  即,你能使你的表有多小?MySQL有很精確的型別,因此你可以建立佔據很小空間的表。一個有用的MySQL資料型別的例子是MEDIUMINT,它是3個位元組長。如果你有100,000,000個記錄,每個記錄節省甚至一個位元組也是很重要的。mSQL2有一個較有限的列型別集合,因此更難於使表更小。 
  
  穩定性


  這較難客觀地評價。對於MySQL穩定性的討論,見1.5 MySQL有多麼穩定?。我們沒有mSQL穩定性的經驗,因此我們對此不能說任何東西。 
  價格 
  另一個重要的問題是許可證。MySQL有一個比mSQL更靈活的許可證,並且也不比mSQL昂貴。無論你選擇使用哪個產品,記得要至少考慮支付一個許可證或電子郵件支援的費用。(當然如果你把你出售的一個產品包括在MySQL中,你將被要求獲得一個許可證。) 
  
  Perl介面 


  MySQL有與mSQL基本相同Perl介面,當有一些增加的功能。 
  
  JDBC ( Java ) 


  MySQL目前有4個JDBC驅動程式:
  gwe 驅動程式:由GWE technologies 開發的一個Java介面(不再支援)。 
  jms 驅動程式:由Xiaokun Kelvin ZHU的開發的一個改進的gwe驅動程式。 
  twz 驅動程式:由Terrence W. Zellers 開發的一個type 4 JDBC驅動程式並用於學習目的。 
  mm 驅動程式:由Mark Matthews 開發的一個type 4 JDBC驅動程式。 
  推薦的驅動程式是twz或mm驅動程式。兩者均被報導工作出色。我們知道mSQL有一個 JDBC 驅動程式,但是我們對它有太少的經驗不能進行比較。
  
  開發速度 


  MySQL有一個非常小的開發者隊伍,但是我們是非常習慣於用C和C++編碼,非常快速。因為執行緒、函式、GROUP BY等在mSQL中仍未實現,它有很多追趕工作要做。要想得到關於它的一些前景,你可以檢視mSQL最後一年的 “HISTIRY”檔案,並將它與MySQL參考書手冊的新功能小節比較(見D MySQL變遷歷史)。哪個快開發得最快應該是相當明顯的。 
  
  實用程式 


  mSQL和MySQL都有許多有趣的第三方工具。因為向上移植(從mSQL到MySQL)是很容易的,幾乎所有mSQL可用的有趣的應用程式也可被MySQL使用。MySQL帶有一個簡單的msql2mysql程式修正在mSQL和MySQL使用的大多數C API函式之間拼寫差別。例如,它將msqlConnect()例項改變為mysql_connect()。變換一個客戶程式從mSQL到MySQL通常花幾分鐘時間。 
  21.1.1 怎樣將mSQL的工具轉換到MySQL
  根據我們的經驗,轉換諸如使用mSQL C API的msql-tcl和msqljava工具將只花不大一小時時間,使得他們用MySQL C API工作。
  
  轉換過程是: 


  在原始碼上執行外殼指令碼msql2mysql。這需要replace程式,它與MySQL一起散發。 
  編譯。 
  修正所有編譯器錯誤。 
  mSQL C API與MySQL C API 之間差別是: 
  
  MySQL使用一個MYSQL結構作為一種連線型別(mSQL使用一個int)。 
  mysql_connect()取一個指向一個MYSQL結構的指標作為一個引數。很容易定義全域性性定義一個或使用malloc()獲得一個。mysql_connect()也取兩個引數指定使用者和口令。你可以為了預設使用將這些設定為NULL,NULL。 
  mysql_error()取MYSQL結構作為一個引數。如果你正在移植老的程式碼,只是把引數加到你的老的msql_error()編碼中。 
  MySQL對所有錯誤返回一個錯誤號和一條文字錯誤訊息。mSQL僅返回一條文字錯誤訊息。 
  存在某些不相容性,因為MySQL支援從同一個程序的到伺服器多個連線。 
  
   mSQL和MySQL的客戶機/伺服器通訊協議有何不同
  有足夠的差別使得不可能(或至少不容易)支援兩者。
  
  它MySQL協議不同於mSQL協議的最重要的方面列在下面: 
  
  一個訊息緩衝區可以包含很多結果行。 
  如果查詢或結果比當前緩衝區大,訊息緩衝區動態地被擴大,直到一個可配置的伺服器和客戶上限。 
  所有的包被編號以捕捉重複或丟失的包。 
  所有的列值以ASCII碼傳送。列和行的長度以緊湊的二進位制編碼(1、2或3個位元組)傳送。 
  MySQL能在未緩衝得結果中讀取(不必在客戶端儲存完整的集合)。 
  如果一個單獨寫/讀花了超過30秒時間,伺服器關閉連線。 
  如果一個連線空閒8個小時,伺服器關閉連線。 
   mSQL 2.0的SQL句法與MySQL有何不同
  列型別 
  
  MySQL 


  有下列額外的型別(比較其他的;見7.7 CREATE TABLE句法): 、
  對於一個字串集中之一的ENUM型別。 
  對於一個字串集中多個的SET型別。 
  對於64位整數的BIGINT型別。 
  MySQL也支援下列額外的型別屬性: 
  UNSIGNED選項。 
  對於整數列的ZEROFILL選項。 
  對於是一個PRIMARY KEY的整數列的AUTO_INCREMENT選項。見20.4.29 mysql_insert_id()。 
  對所有列的DEFAULT值。 
  
  mSQL2 


  mSQL列型別對應於MySQL型別顯示在下面:mSQL型別 相應的MySQL型別 
  CHAR(len) CHAR(len)