JDBC程式設計---JDBC基礎以及連線MySql資料庫

一:JDBC基礎

JDBC全稱為 Java Database Connectivity。即為java資料庫連線,它是一種可執行SQL語句的API。程式可透過JDBC連線到關係型資料庫,並且使用結構化查詢語言(SQL資料庫標準的查詢語言)來完成對資料庫的查詢和更新。

與其他資料庫程式設計環境相比,JDBC為資料庫提供了標準的API。所以使用JDBC的資料庫可以跨平臺開發,如果全部使用標準的SQL語句,也可以說誇資料庫開發。也就是說,如果使用一個JDBC開發一個數據庫應用,那麼該應用既可以在windows下執行,也可以在linux下執行,既可以使用Mysql資料庫,也可以使用oracle資料庫,而程式無須進行修改

1 JDBC簡介

透過使用JDBC,就可以使用同一種API訪問不同的資料庫,換而言之,有了JDBC的API之後,你就不用為Sbase資料庫學習一組API,又為Oracle資料庫學習另一組API,開發人員使用標準的API編寫程式,然後根據不同的資料庫,加入不同的資料庫驅動即可工作。當程式設計師使用JDBC程式設計時只要面向標準的JDBC的API程式設計即可,當進行資料庫切換時候只需要更換不同的實現類即可,這就是面向介面程式設計的典型!

與資料庫建立連線

執行SQL語句

獲得SQL語句的執行結果

透過這三個步驟就可以透過JDBC操作資料庫。

2 JDBC驅動程式型別

資料庫驅動程式是JDBC和資料庫之間的轉換程式,資料庫驅動負責將JDBC的呼叫對映成資料庫的呼叫,

大部分是資料庫都應用JDBC驅動程式例如Oracle和Sybase等,當連線特定的資料庫時候,必須使用相應的資料庫程式,但是對於一些資料的資料庫,例如Access,可能使用JDBC-ODBC橋進行訪問,關於ODBC就是JDBC的前輩了,這裡不加以闡述!

二 JDBC程式設計步驟

載入資料庫驅動 Class。forName(driverClass) //mysql載入驅動 Class。forName(“com。mysql。jdbc。Driver”) //Oracle載入驅動 Class,forName(“oracle。jdbc。driver。OracelDriver”)

獲取資料庫連線DriverManger。getConnection(String url,String user,String pass)

透過connection 建立Statement物件,Connetion建立Statement的方法有如下三個

crateStatement()//建立其物件 prepareStatement(String sql) //根據sql語句建立預編譯的statement物件 prepareCall(String sql) 根據sql語句建立callstatement

JDBC程式設計---JDBC基礎以及連線MySql資料庫

4。使用statement物件來執行sql語句,也有三種方式

1 excute //執行任何語句,但是比較麻煩 excuteUpdate()//主要執行DML和DDL語句,執行DML語句返回受影響的行數,執行DDL語句返回0 excuteQuery()//只用於查詢語句,執行後放回查詢的結果集ResultSet物件

JDBC程式設計---JDBC基礎以及連線MySql資料庫

5。操作結果集,對於執行sql語句的查詢語句,將要返回一個ResultSet物件,該物件儲存Sql語句的查詢結果,程式可以透過操作ResultSet來取得查詢結果

三 以連線Mysql為例子

private static final String PROP_FIlE= “database。ini”; //資料庫8。0以下url後面加?serverTimezone=GMT%2B8 , private static String mysqlURl = “”; private static String mysqlUserName = “”; private static String mysqlUserPassword = “”; private static String mysqlDriver = “”;

JDBC程式設計---JDBC基礎以及連線MySql資料庫

這裡我們利用配置檔案PROP_FILE來獲取載入驅動引數,在專案中通常這麼多

#資料庫連線常用引數 mysqlURl = jdbc:mysql://localhost:3306/lvp_base?serverTimezone=GMT%2B8 mysqlUserName = root mysqlUserPassword = 111111 mysqlDriver = com。mysql。cj。jdbc。Driver

JDBC程式設計---JDBC基礎以及連線MySql資料庫

對於Mysql的URL寫法 jdbc:mysql://localname:port/databasename

如果不知道你的資料庫埠號,可以檢視如下

然後載入配置,獲取這些配置引數

Properties properties = new Properties(); try { properties。load(new FileInputStream(PROP_FIlE)); } catch (IOException e) { e。printStackTrace(); } mysqlDriver = properties。getProperty(“mysqlDriver”); mysqlURl = properties。getProperty(“mysqlURl”); mysqlUserName = properties。getProperty(“mysqlUserName”); mysqlUserPassword = properties。getProperty(“mysqlUserPassword”);

JDBC程式設計---JDBC基礎以及連線MySql資料庫

然後我們載入驅動連線資料庫

// 註冊驅動 try { Class。forName(mysqlDriver); } catch (ClassNotFoundException e) { System。out。println(“未能成功載入驅動程式,請檢查是否成功匯入驅動程式”); e。printStackTrace(); } //登入資料庫 try { System。out。println(“讀取配置資訊:”+mysqlURl + “_” + mysqlUserName + “_” +mysqlUserPassword + “\t\n”); connection = DriverManager。getConnection(mysqlURl, mysqlUserName,mysqlUserPassword); System。out。println(“連線資料庫成功”); return true; } catch (SQLException throwable) { System。out。println(“連線資料庫失敗”); throwable。printStackTrace(); } return false;

JDBC程式設計---JDBC基礎以及連線MySql資料庫

執行之後,我們可以看到執行成功

當然這樣就連線成功了,我覺得不夠直觀,不過美觀,我就用GUI介面操作連線更加直觀化,這裡我用Swing是java介面化開發語言,比AWT更出色,關於這部分我就不細說了。

//SWing 登入介面的GUI元件 private JFrame jFrame = new JFrame(); private JTextField userTextField = new JTextField(20); private JTextField passTextField = new JTextField(20); private JButton loginButton = new JButton(“登入”);

JDBC程式設計---JDBC基礎以及連線MySql資料庫

上面是介面的初始化,點選登入後輸入賬戶和密碼即可登入成功,這裡用到的按鈕的一個事件監聽器,感覺就跟Qt的點選訊號差不多意思,我就不瞎扯 了,哈哈哈,感覺就是!

//為登入按鈕新增事件新增器 loginButton。addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { System。out。println(userTextField。getText() + passTextField。getText() +“,” +mysqlUserName +mysqlUserPassword); if(userTextField。getText()。equals(mysqlUserName) && passTextField。getText()。equals(mysqlUserPassword)) { System。out。println(“enter”); if(connectionFun()) { JOptionPane。showMessageDialog(jFrame,“登入成功”); }else { JOptionPane。showMessageDialog(jFrame,“登入失敗”); } } } });

JDBC程式設計---JDBC基礎以及連線MySql資料庫

執行結果展示如下

原始碼如下

import java。awt。*; import java。awt。event。ActionEvent; import java。awt。event。ActionListener; import java。io。FileInputStream; import java。io。IOException; import java。sql。*; import java。util。Properties; import java。sql。Statement; import java。sql。PreparedStatement; import javax。swing。*; /* * 連線資料庫的步驟如下 * 1 載入資料庫驅動 * * * * */ public class connect_test { private static final String PROP_FIlE= “database。ini”; //資料庫8。0以下url後面加?serverTimezone=GMT%2B8 , private static String mysqlURl = “”; private static String mysqlUserName = “”; private static String mysqlUserPassword = “”; private static String mysqlDriver = “”; //執行JDBC操作的物件 private Connection connection = null; private Statement statement = null; //SWing 登入介面的GUI元件 private JFrame jFrame = new JFrame(); private JTextField userTextField = new JTextField(20); private JTextField passTextField = new JTextField(20); private JButton loginButton = new JButton(“登入”); public void initParam() { Properties properties = new Properties(); try { properties。load(new FileInputStream(PROP_FIlE)); } catch (IOException e) { e。printStackTrace(); } mysqlDriver = properties。getProperty(“mysqlDriver”); mysqlURl = properties。getProperty(“mysqlURl”); mysqlUserName = properties。getProperty(“mysqlUserName”); mysqlUserPassword = properties。getProperty(“mysqlUserPassword”); //為登入按鈕新增事件新增器 loginButton。addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { System。out。println(userTextField。getText() + passTextField。getText() +“,” +mysqlUserName +mysqlUserPassword); if(userTextField。getText()。equals(mysqlUserName) && passTextField。getText()。equals(mysqlUserPassword)) { System。out。println(“enter”); if(connectionFun()) { JOptionPane。showMessageDialog(jFrame,“登入成功”); }else { JOptionPane。showMessageDialog(jFrame,“登入失敗”); } } } }); jFrame。add(userTextField, BorderLayout。NORTH); jFrame。add(passTextField); jFrame。add(loginButton,BorderLayout。SOUTH); jFrame。pack(); jFrame。setVisible(true); } public boolean connectionFun() { // 註冊驅動 try { Class。forName(mysqlDriver); } catch (ClassNotFoundException e) { System。out。println(“未能成功載入驅動程式,請檢查是否成功匯入驅動程式”); e。printStackTrace(); } //登入資料庫 try { System。out。println(“讀取配置資訊:”+mysqlURl + “_” + mysqlUserName + “_” +mysqlUserPassword + “\t\n”); connection = DriverManager。getConnection(mysqlURl, mysqlUserName,mysqlUserPassword); System。out。println(“連線資料庫成功”); return true; } catch (SQLException throwable) { System。out。println(“連線資料庫失敗”); throwable。printStackTrace(); } return false; } public void CloseFun() { if(connection != null) { try { connection。close(); } catch (SQLException throwable) { System。out。println(“資料庫關閉出現異常”); throwable。printStackTrace(); } } } }

JDBC程式設計---JDBC基礎以及連線MySql資料庫

歡迎交流