<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] # 簡介 * JDBC-ODBC橋接技術 | |---在windows中有ODBC技術,ODBC是指開放數據庫連接,可以利用JDBC間接操作ODBC技術,從而實現數據庫連接 * JDBC直接連接 | |---直接由不同的數據庫生產商提供指定的數據庫連接驅動程序實現,此類方式由于JDBC直接操作數據庫,所以性能是最好的 * JDBC網絡連接 | |--- 使用專門的數據庫網絡連接指令進行指定主機的數據庫操作, JDBC是接口,驅動是接口的實現,沒有驅動將無法完成數據庫連接,從而不能操作數據庫! 每個數據庫廠商都需要提供自己的驅動,用來連接自己公司的數據庫,也就是說驅動一般都由數據庫生成廠商提供。 # 開發步驟 在java之中,所有數據庫操作的類和接口都保存在了java.sql包里面,在這個包里面 * 一個類: DriverManager類 * 四個接口: Connection,Statement,ResultSet,PreparedStatement 1. 注冊驅動. 2. 獲得連接. 3. 獲得語句執行平臺 4. 執行sql語句 5. 處理結果 6. 釋放資源. 創建lib目錄,用于存放當前項目需要的所有jar包 ## 注冊驅動 驅動由不同的數據庫廠商提供,這些驅動文件以*.jar文件提供,所以要配置CLASSPATH ~~~ Class.forName("com.mysql.jdbc.Driver"); ~~~ JDBC規范定義驅動接口:java.sql.Driver, MySql驅動包提供了實現類:com.mysql.jdbc.Driver DriverManager工具類,提供注冊驅動的方法 registerDriver(),方法的參數是java.sql.Driver,所以我們可以通過如下語句進行注冊: ~~~ DriverManager.registerDriver(new com.mysql.jdbc.Driver()); ~~~ 以上代碼不推薦使用,存在兩方面不足 1. 硬編碼,后期不易于程序擴展和維護 2. 驅動被注冊兩次。 通常開發我們使用Class.forName() 加載一個使用字符串描述的驅動類。 如果使用Class.forName()將類加載到內存,該類的靜態代碼將自動執行。 通過查詢com.mysql.jdbc.Driver源碼,我們發現Driver類“主動”將自己進行注冊 ~~~ public class Driver extends NonRegisteringDriver implements java.sql.Driver { static { try { java.sql.DriverManager.registerDriver(new Driver()); } catch (SQLException E) { throw new RuntimeException("Can't register driver!"); } } …… } ~~~ 驅動注冊了兩次.我們只需要將靜態代碼塊執行一次,類被加載到內存中會執行靜態代碼塊,并且只執行一次. 現在只需要將類加載到內存中即可: ~~~ 方式1: ★Class.forName("全限定名");//包名+類名 com.mysql.jdbc.Driver 方式2: 類名.class; 方式3: 對象.getClass(); ~~~ ## 獲得鏈接 代碼: ~~~ Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb","root","root"); ~~~ 獲取連接需要方法 DriverManager.getConnection(url,username,password),三個參數分別表示,url 需要連接數據庫的位置(網址) user用戶名 password 密碼 url比較復雜,下面是mysql的url: jdbc:mysql://localhost:3306/mydb JDBC規定url的格式由三部分組成,每個部分中間使用冒號分隔。 * 第一部分是jdbc,這是固定的; * 第二部分是數據庫名稱,那么連接mysql數據庫,第二部分當然是mysql了; * 第三部分是由數據庫廠商規定的,我們需要了解每個數據庫廠商的要求,mysql的第三部分分別由數據庫服務器的IP地址(localhost)、端口號(3306),以及DATABASE名稱(mydb)組成。 ## 獲得語句執行平臺 ~~~ String sql = "某SQL語句"; ~~~ 獲取Statement語句執行平臺: ~~~ Statement stmt = con.createStatement(); ~~~ 常用方法: * int executeUpdate(String sql); --執行insert update delete語句. * ResultSet executeQuery(String sql); --執行select語句. * boolean execute(String sql); --執行select返回true 執行其他的語句返回false. ## 處理結果集(執行insert、update、delete無需處理) ResultSet實際上就是一張二維的表格, 我們可以調用其boolean next()方法指向某行記錄, 當第一次調用next()方法時,便指向第一行記錄的位置, 這時就可以使用ResultSet提供的getXXX(int col)方法 (與索引從0開始不同個,列從1開始)來獲取指定列的數據: ~~~ rs.next();//指向第一行 rs.getInt(1);//獲取第一行第一列的數據 ~~~ 常用方法: * Object getObject(int index) / Object getObject(String name) 獲得任意對象 * String getString(int index) / Object getObject(String name) 獲得字符串 * int getInt(int index) / Object getObject(String name) 獲得整形 * double getDouble(int index) / Object getObject(String name) 獲得雙精度浮點型 ## 釋放資源 與IO流一樣,使用后的東西都需要關閉! 關閉的順序是先得到的后關閉,后得到的先關閉。 ~~~ rs.close(); stmt.close(); con.close(); ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看