Java串連SQL驅動的方式

來源:互聯網
上載者:User

標籤:

某些JDBC的JAR檔案將自動註冊磁碟機類。包含META-INF/services/java.sql.Driver檔案的JAR檔案可以自動註冊磁碟機類,解壓縮驅動程式JAR檔案就可以檢查其是否包含該檔案。

如果驅動程式JAR檔案不支援自動註冊,那就需要找出資料庫供應商使用的JDBC磁碟機類的名字。典型的磁碟機名字如下: 

    org.apache.derby.jdbc.ClientDriver

    org.postgresql.Driver

    com.mysql.jdbc.Driver

 

另一個需要注意的是資料庫URL,我們必須使用各種與資料庫類型相關的參數,例如主機名稱、連接埠號碼和資料庫名。

JDBC使用了一種與普通URL相類似的文法來描述資料來源。

格式形如:

    jdbc:subprotocol:other stuff

執行個體如下

    jdbc:derby://localhost:1527/COREJAVA;create=true

    jdbc:mysql://localhost:3306/COREJAVA

    jdbc:postgresql:COREJAVA

 

通過使用DriverManager,可以用兩種方式來註冊磁碟機。

    首先,在項目Build Path中需要" Add External JARs",加入C:\Program Files (x86)\MySQL\MySQL Connector J目錄下的mysql-connector-java-5.1.37-bin.jar  (這貨也太TM難找了吧)

1. 在Java程式中載入磁碟機類,例如:

Class.forName("com.mysql.jdbc.Driver");

 

    這條語句將使得磁碟機類被載入,由此將執行可以註冊磁碟機類的靜態初始化器。

一個執行個體如下:

 

 $ mysql -u root -p  password: password

 

 資料庫建立語句:

CREATE DATABASE songci;USE songci;CREATE TABLE authors(author_id INT, first_name VARCHR(20), last_name VARCHAR(10), poems VARCHAR(40));

  // 再插入一些資料

-----------------------------------------------------------------------------------------------------------------------------------------------------

Java程式碼片段如下:

 

 1 package com.coresql.sqljdbc; 2  3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.ResultSet; 6 import java.sql.Statement; 7  8 public class MySqlJdbc { 9     10     static {11         try {12             Class.forName("com.mysql.jdbc.Driver");13         } catch (Exception e) {14             System.out.println("Error Loading MySQL Driver!");15             e.printStackTrace();16         }17     }18     19     public static void main(String[] args) {20         try {21             22             Connection connect = DriverManager.getConnection(23                     "jdbc:mysql://localhost:3306/songci","root","mypassword");24 //串連URL為   jdbc:mysql//伺服器位址/資料庫名  ,後面的2個參數分別是登陸使用者名稱和密碼25             26             System.out.println("Success connect Mysql server!");27             Statement stmt = connect.createStatement();28             ResultSet rs = stmt.executeQuery("select * from authors");29             30             while (rs.next()) {31                 System.out.println(rs.getString("last_name") + " " + rs.getString("first_name"));32             }33         } catch (Exception e) {34             e.printStackTrace();35         }36     }37 }

 

 

2.  另一種方式是設定jdbc.driver屬性。可以用命令列參數來指定這個屬性。例如:

    $ java -Djdbc.drivers=org.postgresql.Driver ProgramName

  或者在應用中用下面的調用來設定系統屬性

System.setProperty("jdbc.drivers", "org.postgresql.Driver");

  應用這種方式可以提供多個磁碟機,用冒號將他們分割開,例如:

   org.postgresql.Driver:org.apache.derby.jdbc.ClientDriver

 

   Java程式中串連資料庫的代碼如下:

String url = "jdbc:postgresql:COREJAVA";String username = "root";String password = "mypassword";Connection conn = DriverManager.getConnection(url, username, password);

可以這麼做: 從名為database.properties的檔案中載入串連參數,並串連到資料庫。

jdbc.drivers=com.jdbc.mysql.Driver
jdbc.url=jdbc:mysql://localhost:3306/songci
jdbc.username=root
jdbc.password=mypassword

 

Java代碼如下:

 1 package com.testsql.getconnection; 2  3 import java.io.IOException; 4 import java.io.InputStream; 5 import java.nio.file.Files; 6 import java.nio.file.Paths; 7 import java.sql.Connection; 8 import java.sql.DriverManager; 9 import java.sql.ResultSet;10 import java.sql.SQLException;11 import java.sql.Statement;12 import java.util.Properties;13 14 public class TestDB {15 16     public static void main(String[] args) throws IOException {17         try {18             runTest();19         } catch (SQLException e) {20             for (Throwable t : e) {21                 t.printStackTrace();22             }23         }24     }25 26     27     public static void runTest() throws SQLException, IOException {28         try (Connection conn = getConnection()) {29             Statement stat = conn.createStatement();30             ResultSet rs = stat.executeQuery("SELECT * FROM authors");31             32             while (rs.next()) {33                 System.out.println(rs.getString("last_name") + " " + rs.getString("first_name"));34             }35             System.out.println("Done");36         }37     }38     39     public static Connection getConnection() throws SQLException, IOException {40         Properties props = new Properties();41         42         try (InputStream in = Files.newInputStream(Paths.get("database.properties"))) {43             props.load(in);44         }45         46         String drivers = props.getProperty("jdbc.drivers");47         if (drivers != null) {48             System.setProperty("jdbc.drivers", drivers);49         }        50         51         String url = props.getProperty("jdbc.url");52         String user = props.getProperty("jdbc.username");53         String password = props.getProperty("jdbc.password");54         55         return DriverManager.getConnection(url, user, password);56     }57 }

 

代碼中執行SQL語句:

  在執行SQL命令之前,首先需要建立一個Statement對象。要建立Statement對象,需要使用調用DriverManager.getConnection方法所獲得的Connection對象。

Statement stat = conn.createStatement();

接著將要執行的SQL語句放入字串中,例如:

String command = "UPDATE Books"      + " SET Price=Price-5.00"      + " WHERE Title NOT LIKE ‘%Introduction%‘";

然後調用: 

stat.executeUpdate(command);

  executeUpdate方法將返回受SQL命令影響的行數。這個方法針對SQL中諸如INSERT、UPDATE和DELETE之類的操作,也可以執行諸如CREATE TABLE和DROP TABLE之類的資料定義語句

  執行查詢操作時,則使用executeQuery方法,返回一個ResultSet類型的對象。

ResultSet rs = stat.executeQuery("SELECT * FROM Books");

分析結果時通常可以使用類似下面的迴圈語句:

while (rs.next()) {    // look at a row of result set}

 

Java串連SQL驅動的方式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.