JDBC常用API小結

建立數據庫鏈接的三種方式:

package com.victor_01;import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;import org.junit.Test;public class Test1 {private String url = "jdbc:mysql://192.168.244.144:3306/test";private String user = "root";private String password = "123456";@Testpublic void test1() throws Exception {Driver driver = new com.mysql.jdbc.Driver();Properties prop = new Properties();prop.setProperty("user", user);prop.setProperty("password", password);Connection conn = driver.connect(url, prop);System.out.println(conn);}@Testpublic void test2() throws SQLException{Driver driver = new com.mysql.jdbc.Driver();DriverManager.registerDriver(driver);Connection conn = DriverManager.getConnection(url, user, password);System.out.println(conn);}@Testpublic void test3() throws Exception {Class.forName("com.mysql.jdbc.Driver");Connection conn = DriverManager.getConnection(url, user, password);System.out.println(conn);}}

推薦使用第三種,其實第二種和第三種本質上是一種,后者是前者的優化版。

?

JDBC接口核心的API

 JDBC接口核心的APIjava.sql.*   和  javax.sql.*|- Driver接口: 表示java驅動程序接口。所有的具體的數據庫廠商要來實現此接口。|- connect(url, properties):  連接數據庫的方法。url: 連接數據庫的URL URL語法: jdbc協議:數據庫子協議://主機:端口/數據庫
                            user: 數據庫的用戶名password: 數據庫用戶密碼|- DriverManager類: 驅動管理器類,用于管理所有注冊的驅動程序|-registerDriver(driver)  : 注冊驅動類對象|-Connection getConnection(url,user,password);  獲取連接對象|- Connection接口: 表示java程序和數據庫的連接對象。|- Statement createStatement() : 創建Statement對象|- PreparedStatement prepareStatement(String sql)  創建PreparedStatement對象|- CallableStatement prepareCall(String sql) 創建CallableStatement對象|- Statement接口: 用于執行靜態的sql語句|- int executeUpdate(String sql)  : 執行靜態的更新sql語句(DDL,DML)|- ResultSet executeQuery(String sql)  :執行的靜態的查詢sql語句(DQL)|-PreparedStatement接口:用于執行預編譯sql語句|- int executeUpdate() : 執行預編譯的更新sql語句(DDL,DML)|-ResultSet executeQuery()  : 執行預編譯的查詢sql語句(DQL)|-CallableStatement接口:用于執行存儲過程的sql語句(call xxx)|-ResultSet executeQuery()  : 調用存儲過程的方法|- ResultSet接口:用于封裝查詢出來的數據|- boolean next() : 將光標移動到下一行|-getXX() : 獲取列的值

?

Statement接口

package com.victor_01;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;import org.junit.Test;public class Demo2 {private String url = "jdbc:mysql://192.168.244.144:3306/test";private String user = "root";private String password = "123456";@Testpublic void Test1() {Connection conn = null;Statement stmt = null;ResultSet rs = null;try {Class.forName("com.mysql.jdbc.Driver");conn = DriverManager.getConnection(url, user, password);stmt = conn.createStatement();String sql = "drop table if exists jdbc_test";int result = stmt.executeUpdate(sql);System.out.println("Drop table:" + result);sql = "create table jdbc_test(id int,name varchar(10))";result = stmt.executeUpdate(sql);System.out.println("Create result:" + result);sql = "insert into jdbc_test values(1,'hello')";result = stmt.executeUpdate(sql);System.out.println("Insert result:" + result);int id = 2;String name = "world";sql = "insert into jdbc_test values(" + id + ",'" + name + "')";result = stmt.executeUpdate(sql);System.out.println("Insert result2:" + result);name = "java";sql = "update jdbc_test set name='" + name + "' where id=" + id+ "";result = stmt.executeUpdate(sql);System.out.println("Update result:" + result);sql = "select * from jdbc_test";rs = stmt.executeQuery(sql);while (rs.next()) {System.out.println(rs.getInt("id") + " " + rs.getString("name"));}} catch (Exception e) {e.printStackTrace();} finally {if (rs != null) {try {rs.close();} catch (SQLException e) {e.printStackTrace();}}if (stmt != null)try {stmt.close();} catch (SQLException e) {e.printStackTrace();}if (conn != null)try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}}

?

PreparedStatement接口

package com.victor_01;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;import org.junit.Test;public class Demo3 {private String url="jdbc:mysql://192.168.244.144:3306/test";private String user="root";private String password="123456";@Testpublic void PreparedStatementTest() throws Exception{Class.forName("com.mysql.jdbc.Driver");Connection conn=DriverManager.getConnection(url, user, password);String sql="insert into jdbc_test(id,name) values(?,?)";PreparedStatement prestmt =conn.prepareStatement(sql);prestmt.setInt(1, 3);prestmt.setString(2,"tom");int result=prestmt.executeUpdate();System.out.println(result);sql="update jdbc_test set name=? where id=?";prestmt=conn.prepareStatement(sql);prestmt.setString(1, "steve");prestmt.setInt(2, 3);result=prestmt.executeUpdate();System.out.println(result);sql="select * from jdbc_test where id=?";prestmt=conn.prepareStatement(sql);prestmt.setInt(1, 3);ResultSet rs= prestmt.executeQuery();while(rs.next()){System.out.println("id="+rs.getInt(1)+";name="+rs.getString(2));}rs.close();prestmt.close();conn.close();}}

?

CallableStatement接口

package com.victor_01;import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;import org.junit.Test;public class Demo3 {private String url="jdbc:mysql://192.168.244.144:3306/test";private String user="root";private String password="123456";@Testpublic void PreparedStatementTest() throws Exception{Class.forName("com.mysql.jdbc.Driver");Connection conn=DriverManager.getConnection(url, user, password);String sql="drop procedure findById";Statement stmt=conn.createStatement();int result=stmt.executeUpdate(sql);System.out.println("drop result:="+result);sql=" CREATE PROCEDURE findById(IN sid INT) BEGIN select * from jdbc_test where id=sid; end";stmt=conn.createStatement();result=stmt.executeUpdate(sql);System.out.println("create result:="+result);//直接調用存儲過程sql="call findById(2)";CallableStatement stmt1=conn.prepareCall(sql);ResultSet rs=stmt1.executeQuery();while(rs.next()){System.out.println("id="+rs.getInt(1)+",name="+rs.getString(2));}//傳參調用存儲過程sql="call findById(?)";stmt1=conn.prepareCall(sql);stmt1.setInt(1, 4);rs=stmt1.executeQuery();while(rs.next()){System.out.println("id="+rs.getInt(1)+",name="+rs.getString(2));}//帶有輸出參數的存儲過程sql="drop procedure findById1";stmt=conn.createStatement();result=stmt.executeUpdate(sql);System.out.println("drop findById1 result:"+result);sql=" CREATE PROCEDURE findById1(IN sid INT,OUT sname VARCHAR(10)) BEGIN select name into sname from jdbc_test where id=sid; end";stmt=conn.createStatement();result=stmt.executeUpdate(sql);System.out.println("create result:="+result);sql="call findById1(?,?)";stmt1=conn.prepareCall(sql);stmt1.setInt(1, 4);stmt1.registerOutParameter(2, java.sql.Types.VARCHAR);stmt1.executeQuery(); //注意:結果不是返回到ResultSet中,而是返回到輸出參數中。   String sname=stmt1.getString(2);System.out.println(sname);rs.close();stmt1.close();stmt.close();conn.close();}}

  

轉載于:https://www.cnblogs.com/ivictor/p/5046122.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/375248.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/375248.shtml
英文地址,請注明出處:http://en.pswp.cn/news/375248.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

學習動態性能表(12)--v$db_object_cache

學習動態性能表 第12篇--V$DB_OBJECT_CACHE 2007.6.4 本視圖提供對象在library cache(shared pool)中對象統計,提供比v$librarycache更多的細節,并且常用于找出shared pool中的活動對象。 v$db_object_cache中的常用列: OWNER:對…

Java Platform Standard Edition 8 Documentation

下面這個圖挺有用的,收藏一下。Oracle has two products that implement Java Platform Standard Edition (Java SE) 8: Java SE Development Kit (JDK) 8 and Java SE Runtime Environment (JRE) 8.JDK 8 is a superset of JRE 8, and contains everything that is…

清除端口占用的程序

程序啟動的過程中,有時候會提示“端口被占用”。如何快速的找到占用該端口的進程?網上有很多種方法,這里自己整理了下,使用DOS命令查詢端口并清除端口占用的程序,做個筆記。 windows系統下DOS命令: 1.查看端…

Python進階06 循環對象

Python進階06 循環對象 作者:Vamei 出處:http://www.cnblogs.com/vamei 歡迎轉載,也請保留這段聲明。謝謝! 這一講的主要目的是為了大家在讀Python程序的時候對循環對象有一個基本概念。 循環對象的并不是隨著Python的誕生就存在的…

使用 WordPress 主題制作的20個精美網頁

WordPress 是一款個人博客系統,并逐步演化成一款內容管理系統軟件,它是使用 PHP 語言和 MySQL 數據庫開發的。用戶可以在支持 PHP 和 MySQL 數據庫的服務器上使用自己的博客。這里給大家分享使用 WordPress 主題制作的20個精美網頁。 您可能感興趣的相關…

內存地址空間

一個存儲器(內存)被劃分為若干個存儲單元,一個存儲單元可存儲一個字節(Byte) CPU可尋址到多少個存儲單元即這些存儲單元就是CPU的內存地址空間 如8086CPU有20根地址線可尋址1M的存儲單元,那么這個1M個可尋址到的存儲單元就構成這個CPU的內存地址空間 而實際的存儲器可以是RA…

關于監聽與控制設備旋轉全解析(UIDeviceOrientationDidChangeNotification)

一類情況: 初始化app的方向,比如只支持橫屏或者豎屏。下面舉例只支持豎屏的案例 在app的屬性里面手動設置 上面標注了該app支持的方向種類,要是在app里支持Portrait方向,還需要添加以下代碼 二類情況: 上面的代碼表明a…

標志寄存器FLAG

FLAG標志寄存器按位操作,FLAG是16位寄存器,第0位為CF標志第2位為PF標志... 如圖(FLAG各標志位以及在DEBUG中對應的顯示):

PHP 性能分析: Xhprof Xhgui

PHP 性能分析: Xhprof & Xhgui 轉載于:https://www.cnblogs.com/joshua317/articles/5072859.html

powerdesigner低版本打開高版本方式為只讀導致無法保存PD只讀read-only-mode

由于版本號不一致 打開PD文件后提示: 點擊【確定】后打開,點擊【取消】后打不開 但打開后修改完畢保存提示: 解決辦法: pdm文件實際上是個xml文件,直接用文本編輯器打開該文件修改版本號即可 把根節點最后的版本號改成…

字符串加解密

題目描述 題目描述 1、對輸入的字符串進行加解密,并輸出。 2加密方法為: 當內容是英文字母時則用該英文字母的后一個字母替換,同時字母變換大小寫,如字母a時則替換為B;字母Z時則替換為a; 當內容是數字時則把該數字加1&…

Win32 一個helloworld對話框

.386.model flat,stdcalloption casemap:none include windows.inc include user32.inc include kernel32.inc includelib user32.lib includelib kernel32.lib.data ;數據段titleS db helloworld,0 messageS db hello,welcome to win32,0.code ;代碼段start: invoke Messa…

Python補充06 Python之道

Python補充06 Python之道 作者:Vamei 出處:http://www.cnblogs.com/vamei 歡迎轉載,也請保留這段聲明。謝謝! Python有一個彩蛋,用下面語句調出: import this 該彩蛋的文檔記錄于PEP 20。 語句執行之后&…

傳送指令 MOV

MOV dest,src ;dest <-- srcMOV指令把一個字節或字從源地址src送入目的地址destsrc源操作數可以是立即數,寄存器,段寄存器,存儲單元MOV AX,10 ;MOV 寄存器,數據 eg-1MOV AX,BX ; MOV 寄存器,寄存器 eg-2MOV AX,[0] ;MOV 寄存器,內存單元 eg-3MOV [0],AX ;MOV 內存單元…

四舍五入函數

四舍五入函數 Math.Round()posted on 2015-12-25 15:58 低音炮可怕男子 閱讀(...) 評論(...) 編輯 收藏 轉載于:https://www.cnblogs.com/DreamTime/p/5076201.html

串傳送指令MOVSB MOVSW

MOVSB(move string byte)ES:DI <-- DS:SI 把ds:si所指地址內存單元中的數據送到es:di所指向的內存單元中,源地址數據保持不變,si和di指向下一個要傳送的數據傳送的次數(字符串長度)保存在CX寄存器中并用cld/std說明si和di是遞增還是遞減,最后用REP指令重復執行MOVSB直到cx0終…

file_get_content和curl的性能比較

今天在獲取微信一張二維碼圖片時發現使用php中的file_get_content方式和curl方式竟然相差了50倍左右&#xff0c;直接暈倒&#xff01;&#xff01;&#xff01; 轉載于:https://www.cnblogs.com/jenqz/p/5077996.html

分段機制

根據編程需要可將地址連續的內存單元看作是一個段段地址*16來定位段的起始地址偏移地址來定位這個段中的各個單元一個段的大小最大為64K,因為偏移地址是16位,16位的尋址能力為64KDS:[BX] 0C8C:0000; 段地址為0C8CH; 偏移地址0H&#xff5e;FFFFH 大小為64K0C8C:FFFF一般匯編源…

java定時器的使用(Timer)

java定時器的使用&#xff08;Timer&#xff09;1、在應用開發中&#xff0c;常常須要一些周期性的操作&#xff0c;比方每5分鐘運行某一操作等。對于這種操作最方便、高效的實現方式就是使用java.util.Timer工具類。private java.util.Timer timer;timer new Timer(true);tim…

nginx 配置優化詳解

# nginx不同于apache服務器&#xff0c;當進行了大量優化設置后會魔術般的明顯性能提升效果 # nginx在安裝完成后&#xff0c;大部分參數就已經是最優化了&#xff0c;我們需要管理的東西并不多#user nobody;#阻塞和非阻塞網絡模型&#xff1a; #同步阻塞模型&#xff0c;一請…