導航:首頁 > 源碼編譯 > jdbc預編譯連接資料庫

jdbc預編譯連接資料庫

發布時間:2023-04-10 10:14:21

『壹』 jdbc鏈接MySql資料庫,預編譯的sql語句怎麼使用批處理執行

是指應用程序的方法吧。如果你是用hibernate、iBATIS等連接資料庫,直接從log4j配置文件中打開調試模式就行,如果用的自己寫的jdbc連接,那就只能在執行前列印了

『貳』 jdbc連接mysql資料庫需要jia包嗎

只需要mysql的驅動包:包名為:mysql-connector-java-5.1.37-bin.jar
源碼如下:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

import org.junit.Test;

public class JdbcMysql {

@Test
public void connection() throws Exception{
String username = "root";
String password = "root";
String url = "jdbc:mysql://localhost:3306/exam?characterEncoding=utf-8";
String sql = "UPDATE s_cust SET cust_name=? WHERE cid = ? ";
/模閉/載入mysql的驅動類,獲得連接,獲取SQL的預編譯,設置參數,迅頌執行畝碼鄭SQL語句
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection(url, username, password);
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1, "北京");
ps.setInt(2, 6);
ps.execute();
ps.close();
con.close();
}
}

『叄』 如何利用JDBC連接並操作Oracle資料庫

/**
*一個非常標準的連接Oracle資料庫的示例代碼
*/
publicvoidtestOracle()
{
Connectioncon=null;//創建一個資料庫連接
PreparedStatementpre=null;//創建預編譯語句對象,一般都是用這個而不用Statement
岩則粗拿棚ResultSetresult=null;//創建一個結果集對象
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");//載入Oracle驅動程序
System.out.println("開始嘗試連接資料庫!");
Stringurl="jdbc:oracle:thin:@127.0.0.1:1521:XE";//127.0.0.1是本機地址,XE是精簡版Oracle的默認資料庫的SID
//如果是服務名,則用Stringurl="jdbc:oracle:thin:@127.0.0.1:1521/ORCL
Stringuser="system";//用戶名,系統默認的賬戶名
Stringpassword="147";//你安裝時選設置的密碼
con=DriverManager.getConnection(url,user,password);//獲取連接
System.out.println("連接成功!");
Stringsql="select*fromstudentwherename=?";//預編譯語句,「?」代表參數
pre=con.prepareStatement(sql);//實例化預編譯語句
pre.setString(1,"劉顯安");//設置參數,前面的1表示參數的索引,而不是表中列名的索引
result=pre.executeQuery();//執行查詢,注意括弧中不需要再加參數
while(result.next())
//當結果集不為空時
System.out.println("學號:"+result.getInt("id")+"姓名:"
+result.getString("name"));
}
catch(Exceptione)
{
e.printStackTrace();
}
finally
{
try
{
//逐一將上面的幾個對象關閉,因為不關閉的話會影響性能、並且佔用資源
//注意關閉的順序,最後使用的最先關閉
if(result!=null)
result.close();
if(pre!=null)
pre.close();
敏物if(con!=null)
con.close();
System.out.println("資料庫連接已關閉!");
}
catch(Exceptione)
{
e.printStackTrace();
}
}
}

『肆』 求JDBC連接MYSQL資料庫方法

下載mysql資料庫的驅動jar包放在伺服器安裝目帶陸錄下的lib子目錄(以便伺服器的JVM可以訪問),不同的服蠢辯頃務器存放目錄不同。具體代碼:
try{
Class.forName("org,gjt.mm.mysql.Driver").newInstance(); //顯式載入MySQL驅動灶配程序類;
Connection con=DriverManager.getConnection("jdbc:mysql://localhost/databease","root","root");//通過JDBCURL選擇正確的驅動程序。 例如使用MYSQL的JDBCURL是 jdbc://機器名/資料庫名,後邊兩個參數如果你設置密碼的話會用到
Statement s=con.creatStatement();
ResultSet re=s.executeQuery("select * from database");
while(re.next()){
String s1=re.getString(1);
}
}catch(Exception e){ System.out.println(e.toString);}
finally{
...顯式得關閉連接,釋放資源。
...
}
純手打。。。。給分吧

『伍』 淺談JDBC怎麼連接資料庫

各個開發商的介面並不完全相同,所以開發環境的變化會帶來一定的配置變化。本文主要集合了不同資料庫銀搏的連接方式。
JDBC怎麼連接資料庫一、連接各種資料庫方式速查表
下面羅列了各種資料庫使用JDBC連接的方式,可以作為一個手冊使用。
1、Oracle8/8i/9i資料庫(thin模式)
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
Stringurl="jdbcracle:thinlocalhost:1521rcl";//orcl為數據襪飢庫的SID
Stringuser="test";
Stringpassword="test";
Connectionconn=DriverManager.getConnection(url,user,password);
2、DB2資料庫
Class.forName("com.ibm.db2.jdbc.app.DB2Driver").newInstance();
Stringurl="jdbc:db2://localhost:5000/sample";//sample為你的資料庫名
Stringuser="admin";
Stringpassword="";
Connectionconn=DriverManager.getConnection(url,user,password);
3、SqlServer7.0/2000資料庫
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
Stringurl="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb";
//mydb為資料庫
Stringuser="sa";
Stringpassword="";
Connectionconn=DriverManager.getConnection(url,user,password);
4、Sybase資料庫
Class.forName("com.sybase.jdbc.SybDriver").newInstance();
Stringurl="jdbc:sybase:Tds:localhost:5007/myDB";//myDB為你的資料庫名
PropertiessysProps=System.getProperties();
SysProps.put("user","userid");
SysProps.put("password","user_password");
Connectionconn=DriverManager.getConnection(url,SysProps);
5、Informix資料庫
Class.forName("com.informix.jdbc.IfxDriver").newInstance();
Stringurl="jdbc:informix-sqli://123.45.67.89:1533/myDB:INFORMIXSERVER=myserver;
user=testuser;password=testpassword";//myDB為資料庫名
Connectionconn=DriverManager.getConnection(url);
6、MySQL資料庫
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
Stringurl="jdbc:mysql://localhost/myDB?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1"
//myDB為資料庫名
Connectionconn=DriverManager.getConnection(url);
7、PostgreSQL資料庫
Class.forName("org.postgresql.Driver").newInstance();
Stringurl="jdbc:postgresql://localhost/myDB"//myDB為資料庫名
Stringuser="myuser";
Stringpassword="mypassword"鋒好祥;
Connectionconn=DriverManager.getConnection(url,user,password);
8、access資料庫直連用ODBC的
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Stringurl="jdbcdbcriver={MicroSoftAccessDriver(*.mdb)};DBQ="+application.getRealPath("/Data/ReportDemo.mdb");
Connectionconn=DriverManager.getConnection(url,"","");
StatementstmtNew=conn.createStatement();
JDBC怎麼連接資料庫二、JDBC連接MySql方式
下面是使用JDBC連接MySql的一個小的教程
1、查找驅動程序
MySQL目前提供的java驅動程序為Connection/J,可以從MySQL官方網站下載,並找到mysql-connector-java-3.0.15-ga-bin.jar文件,此驅動程序為純java驅動程序,不需做其他配置。
2、動態指定classpath
如果需要執行時動態指定classpath,就在執行時採用-cp方式。否則將上面的.jar文件加入到classpath環境變數中。
3、載入驅動程序
try{
Class.forName(com.mysql.jdbc.Driver);
System.out.println(SuccessloadingMysqlDriver!);
}catch(Exceptione)
{
System.out.println(ErrorloadingMysqlDriver!);
e.printStackTrace();
}
4、設置連接的url
jdbc:mysql://localhost/databasename[?pa=va][&pa=va]
JDBC怎麼連接資料庫三、以下列出了在使用JDBC來連接Oracle資料庫時可以使用的一些技巧
1、在客戶端軟體開發中使用Thin驅動程序
在開發Java軟體方面,Oracle的資料庫提供了四種類型的驅動程序,二種用於應用軟體、applets、servlets等客戶端軟體,另外二種用於資料庫中的Java存儲過程等伺服器端軟體。在客戶機端軟體的開發中,我們可以選擇OCI驅動程序或Thin驅動程序。OCI驅動程序利用Java本地化介面(JNI),通過Oracle客戶端軟體與資料庫進行通訊。Thin驅動程序是純Java驅動程序,它直接與資料庫進行通訊。為了獲得最高的性能,Oracle建議在客戶端軟體的開發中使用OCI驅動程序,這似乎是正確的。但我建議使用Thin驅動程序,因為通過多次測試發現,在通常情況下,Thin驅動程序的性能都超過了OCI驅動程序。
2、關閉自動提交功能,提高系統性能
在第一次建立與資料庫的連接時,在預設情況下,連接是在自動提交模式下的。為了獲得更好的性能,可以通過調用帶布爾值false參數的Connection類的setAutoCommit()方法關閉自動提交功能,如下所示:
conn.setAutoCommit(false);
值得注意的是,一旦關閉了自動提交功能,我們就需要通過調用Connection類的commit()和rollback()方法來人工的方式對事務進行管理。
3、在動態SQL或有時間限制的命令中使用Statement對象
在執行SQL命令時,我們有二種選擇:可以使用PreparedStatement對象,也可以使用Statement對象。無論多少次地使用同一個SQL命令,PreparedStatement都只對它解析和編譯一次。當使用Statement對象時,每次執行一個SQL命令時,都會對它進行解析和編譯。這可能會使你認為,使用PreparedStatement對象比使用Statement對象的速度更快。然而,我進行的測試表明,在客戶端軟體中,情況並非如此。因此,在有時間限制的SQL操作中,除非成批地處理SQL命令,我們應當考慮使用Statement對象。
此外,使用Statement對象也使得編寫動態SQL命令更加簡單,因為我們可以將字元串連接在一起,建立一個有效的SQL命令。因此,我認為,Statement對象可以使動態SQL命令的創建和執行變得更加簡單。
4、利用helper函數對動態SQL命令進行格式化
在創建使用Statement對象執行的動態SQL命令時,我們需要處理一些格式化方面的問題。例如,如果我們想創建一個將名字O'Reilly插入表中的SQL命令,則必須使用二個相連的「''」號替換O'Reilly中的「'」號。完成這些工作的最好的方法是創建一個完成替換操作的helper方法,然後在連接字元串心服用公式表達一個SQL命令時,使用創建的helper方法。與此類似的是,我們可以讓helper方法接受一個Date型的值,然後讓它輸出基於Oracle的to_date()函數的字元串表達式。
5、利用PreparedStatement對象提高資料庫的總體效率
在使用PreparedStatement對象執行SQL命令時,命令被資料庫進行解析和編譯,然後被放到命令緩沖區。然後,每當執行同一個PreparedStatement對象時,它就會被再解析一次,但不會被再次編譯。在緩沖區中可以發現預編譯的命令,並且可以重新使用。在有大量用戶的企業級應用軟體中,經常會重復執行相同的SQL命令,使用PreparedStatement對象帶來的編譯次數的減少能夠提高資料庫的總體性能。如果不是在客戶端創建、預備、執行PreparedStatement任務需要的時間長於Statement任務,我會建議在除動態SQL命令之外的所有情況下使用PreparedStatement對象。
6、在成批處理重復的插入或更新操作中使用PreparedStatement對象
如果成批地處理插入和更新操作,就能夠顯著地減少它們所需要的時間。Oracle提供的Statement和CallableStatement並不真正地支持批處理,只有PreparedStatement對象才真正地支持批處理。我們可以使用addBatch()和executeBatch()方法選擇標準的JDBC批處理,或者通過利用PreparedStatement對象的setExecuteBatch()方法和標準的executeUpdate()方法選擇速度更快的Oracle專有的方法。要使用Oracle專有的批處理機制,可以以如下所示的方式調用setExecuteBatch():
PreparedStatementpstmt3Dnull;
try{
((OraclePreparedStatement)pstmt).setExecuteBatch(30);
...
pstmt.executeUpdate();
}
調用setExecuteBatch()時指定的值是一個上限,當達到該值時,就會自動地引發SQL命令執行,標準的executeUpdate()方法就會被作為批處理送到資料庫中。我們可以通過調用PreparedStatement類的sendBatch()方法隨時傳輸批處理任務。
7、使用Oraclelocator方法插入、更新大對象(LOB)
Oracle的PreparedStatement類不完全支持BLOB和CLOB等大對象的處理,尤其是Thin驅動程序不支持利用PreparedStatement對象的setObject()和setBinaryStream()方法設置BLOB的值,也不支持利用setCharacterStream()方法設置CLOB的值。只有locator本身中的方法才能夠從資料庫中獲取LOB類型的值。可以使用PreparedStatement對象插入或更新LOB,但需要使用locator才能獲取LOB的值。由於存在這二個問題,因此,我建議使用locator的方法來插入、更新或獲取LOB的值。
8、使用SQL92語法調用存儲過程
在調用存儲過程時,我們可以使用SQL92或OraclePL/SQL,由於使用OraclePL/SQL並沒有什麼實際的好處,而且會給以後維護你的應用程序的開發人員帶來麻煩,因此,我建議在調用存儲過程時使用SQL92。
9、使用ObjectSQL將對象模式轉移到資料庫中
既然可以將Oracle的資料庫作為一種面向對象的資料庫來使用,就可以考慮將應用程序中的面向對象模式轉到資料庫中。目前的方法是創建Javabean作為偽裝的資料庫對象,將它們的屬性映射到關系表中,然後在這些bean中添加方法。盡管這樣作在Java中沒有什麼問題,但由於操作都是在資料庫之外進行的,因此其他訪問資料庫的應用軟體無法利用對象模式。如果利用Oracle的面向對象的技術,可以通過創建一個新的資料庫對象類型在資料庫中模仿其數據和操作,然後使用JPublisher等工具生成自己的Javabean類。如果使用這種方式,不但Java應用程序可以使用應用軟體的對象模式,其他需要共享你的應用中的數據和操作的應用軟體也可以使用應用軟體中的對象模式。
10、利用SQL完成資料庫內的操作
我要向大家介紹的最重要的經驗是充分利用SQL的面向集合的方法來解決資料庫處理需求,而不是使用Java等過程化的編程語言。
如果編程人員要在一個表中查找許多行,結果中的每個行都會查找其他表中的數據,最後,編程人員創建了獨立的UPDATE命令來成批地更新第一個表中的數據。與此類似的任務可以通過在set子句中使用多列子查詢而在一個UPDATE命令中完成。當能夠在單一的SQL命令中完成任務,何必要讓數據在網上流來流去的?我建議用戶認真學習如何最大限度地發揮SQL的功能。

『陸』 java中使用JDBC完成資料庫操作的基本步驟是什麼

創建一個以JDBC連接資料庫的程序,包含7個步驟: x0dx0a 1、載入JDBC驅動程序: x0dx0a 在連接資料庫之前,首先要載入想要連接的資料庫的驅動到JVM(Java虛擬機), x0dx0a 這通過java.lang.Class類的靜態方法forName(String className)實現。 x0dx0a 例如: x0dx0a try{ x0dx0a //載入MySql的驅動類 x0dx0a Class.forName("com.mysql.jdbc.Driver") ; x0dx0a }catch(ClassNotFoundException e){ x0dx0a System.out.println("找不到驅動程序類 ,載入驅動失敗!"); x0dx0a e.printStackTrace() ; x0dx0a } x0dx0a 成功載入後,會將Driver類的實例注冊到DriverManager類中。 x0dx0a 2、提供JDBC連接的URL x0dx0a •連接URL定義了連接資料庫時的協議、子協議、數據源標識。 x0dx0a •書寫形式:協議:子協議:數據源標識 x0dx0a 協議:在JDBC中總信返是以jdbc開始 x0dx0a 子協議:是橋滑彎飢連接的驅動程序或是資料庫管理系統名稱。 x0dx0a 數據源標識:標記找到資料庫來源的地址與連接埠。 x0dx0a 例如:(MySql的連接URL) x0dx0a jdbc:mysql: x0dx0a /鬧陵/localhost:3306/test?useUnicode=true&characterEncoding=gbk ; x0dx0a useUnicode=true:表示使用Unicode字元集。如果characterEncoding設置為 x0dx0a gb2312或GBK,本參數必須設置為true 。characterEncoding=gbk:字元編碼方式。 x0dx0a 3、創建資料庫的連接 x0dx0a •要連接資料庫,需要向java.sql.DriverManager請求並獲得Connection對象, x0dx0a 該對象就代表一個資料庫的連接。 x0dx0a •使用DriverManager的getConnectin(String url , String username , x0dx0a String password )方法傳入指定的欲連接的資料庫的路徑、資料庫的用戶名和 x0dx0a 密碼來獲得。 x0dx0a 例如: x0dx0a //連接MySql資料庫,用戶名和密碼都是root x0dx0a String url = "jdbc:mysql://localhost:3306/test" ; x0dx0a String username = "root" ; x0dx0a String password = "root" ; x0dx0a try{ x0dx0a Connection con = x0dx0a DriverManager.getConnection(url , username , password ) ; x0dx0a }catch(SQLException se){ x0dx0a System.out.println("資料庫連接失敗!"); x0dx0a se.printStackTrace() ; x0dx0a } x0dx0a 4、創建一個Statement x0dx0a •要執行SQL語句,必須獲得java.sql.Statement實例,Statement實例分為以下3 x0dx0a 種類型: x0dx0a 1、執行靜態SQL語句。通常通過Statement實例實現。 x0dx0a 2、執行動態SQL語句。通常通過PreparedStatement實例實現。 x0dx0a 3、執行資料庫存儲過程。通常通過CallableStatement實例實現。 x0dx0a 具體的實現方式: x0dx0a Statement stmt = con.createStatement() ; x0dx0a PreparedStatement pstmt = con.prepareStatement(sql) ; x0dx0a CallableStatement cstmt = x0dx0a con.prepareCall("{CALL demoSp(? , ?)}") ; x0dx0a 5、執行SQL語句 x0dx0a Statement介面提供了三種執行SQL語句的方法:executeQuery 、executeUpdate x0dx0a 和execute x0dx0a 1、ResultSet executeQuery(String sqlString):執行查詢資料庫的SQL語句 x0dx0a ,返回一個結果集(ResultSet)對象。 x0dx0a 2、int executeUpdate(String sqlString):用於執行INSERT、UPDATE或 x0dx0a DELETE語句以及SQL DDL語句,如:CREATE TABLE和DROP TABLE等 x0dx0a 3、execute(sqlString):用於執行返回多個結果集、多個更新計數或二者組合的 x0dx0a 語句。 x0dx0a 具體實現的代碼: x0dx0a ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ; x0dx0a int rows = stmt.executeUpdate("INSERT INTO ...") ; x0dx0a boolean flag = stmt.execute(String sql) ; x0dx0a 6、處理結果 x0dx0a 兩種情況: x0dx0a 1、執行更新返回的是本次操作影響到的記錄數。 x0dx0a 2、執行查詢返回的結果是一個ResultSet對象。 x0dx0a • ResultSet包含符合SQL語句中條件的所有行,並且它通過一套get方法提供了對這些 x0dx0a 行中數據的訪問。 x0dx0a • 使用結果集(ResultSet)對象的訪問方法獲取數據: x0dx0a while(rs.next()){ x0dx0a String name = rs.getString("name") ; x0dx0a String pass = rs.getString(1) ; // 此方法比較高效 x0dx0a } x0dx0a (列是從左到右編號的,並且從列1開始) x0dx0a 7、關閉JDBC對象 x0dx0a 操作完成以後要把所有使用的JDBC對象全都關閉,以釋放JDBC資源,關閉順序和聲 x0dx0a 明順序相反: x0dx0a 1、關閉記錄集 x0dx0a 2、關閉聲明 x0dx0a 3、關閉連接對象 x0dx0a if(rs != null){ // 關閉記錄集 x0dx0a try{ x0dx0a rs.close() ; x0dx0a }catch(SQLException e){ x0dx0a e.printStackTrace() ; x0dx0a } x0dx0a } x0dx0a if(stmt != null){ // 關閉聲明 x0dx0a try{ x0dx0a stmt.close() ; x0dx0a }catch(SQLException e){ x0dx0a e.printStackTrace() ; x0dx0a } x0dx0a } x0dx0a if(conn != null){ // 關閉連接對象 x0dx0a try{ x0dx0a conn.close() ; x0dx0a }catch(SQLException e){ x0dx0a e.printStackTrace() ; x0dx0a } x0dx0a }

『柒』 如何使用jdbc連接mysql資料庫

用Jdbc連接MySql伺服器還是很方便的。
首先,將jdbc導入工程,或者將jdbc放到ClassPath里,這里我利用Eclipse直接導入jdbc jar文件,不羅嗦核友盯了。
然後,制定DriverManager,利用最簡單的方法,Class類的froName直接告亂完成,代碼:
Class.forName("com.mysql.jdbc.Driver").newInstance();

然後,實例化一個鏈接Connection,注意用戶名和密碼,有幾個方法可供選擇,這里我用的是DirverManager類的getConnection(String url, String user, String password)方法。具體使用:DriverManager
例如:Connection conn=DriverManager.getConnection("jdbc:mysql://localhost/mydatabase", "root", "1234");
下一步,建改和立用於執行sql語句的Statement,這個容易,一行代碼搞定:
Statement stat=conn.createStatement();
最後就可以利用stat實例執行sql語句了

『捌』 如何實現JDBC連接mysql資料庫

1.導入mysql資料庫的驅動jar包
如我行高的導的是mysql-connector-java-5.1.40.jar
2.注冊驅動
注冊驅動代碼為:Class.forName("com.mysql.jdbc.Driver")
3.獲取連接
Connection con = DriverManager.getConnection(url,username,password)
其中url為 jdbc:mysql://localhost:3306/xun?useSSL=false,後面那個xun為資料庫的庫名,如果不使用加密的話,?useSSL=false這個其實也可以省略,省略後為jdbc:mysql://localhost:3306/xun,不檔納尺過最好還是別省略哈。
4.獲取PrepareStatement並發送sql查詢語句
String sql = "select * from user where username = ?"(茄指這個查詢語句為隨便舉的例子哈)
PreparedStatement pst = con.preparedStatement(sql);

pst.setString(1,"zengjiaxun");
ResultSet rs = pst.executeQuery();
注意,執行查詢使用的是executeQuery()方法,此方法返回的是ResultSet,ResultSet為結果集,封裝了查詢結果。插入,刪除,修改用的是executeUpdate()方法。
pst.clearParameters();
執行sql後記得關閉相應的流。。

『玖』 徹底搞懂JDBC的運行過程

前幾天筆者發布了博客,手寫mybatis徹底搞懂框架原理。為了幫助初學者更好理解mybatis框架,這次講解一下Java的JDBC的運行過程。

JDBC的作用

JDBC的全稱是Java DataBase Connection,也就是Java資料庫連接,我們可以用它來操作關系型資料庫。JDBC介面及相關類在java.sql包和javax.sql包里。我們可以用它來連接資料庫,執行SQL查詢,存儲過程,並處理返回的結果。

JDBC介面讓Java程序和JDBC驅動實現了松耦合,使得切換不同的資料庫變得更加簡單。

JDBC的連接步驟

執行一次JDBC連接,分六個步驟進行:

1. 導入包

在程序中包含資料庫編程所需的JDBC類。大多數情況下,使用 import java.sql.* 就足夠了

2. 注冊JDBC驅動程序

需要初始化驅動程序,這樣就可以打開與資料庫的通信。

3. 打開一個連接

使用DriverManager.getConnection()方法來創建一個Connection對象,它代表一個資料庫的物理連接。

4. 執行一個查詢

需要使用一個類型為Statement或PreparedStatement的對象(兩者區別看後文),並提交一個SQL語句到資料庫執行查詢。

5. 從結果集中提取數據

這一步中演示如何從資料庫中獲取查詢結果的數據。使用ResultSet.getXXX()方法來檢索的數據結果

6. 清理環境資源

在使用JDBC與數據交互操作資料庫中的數據後,應該明確地關閉所有的資料庫資源以減少資源的浪費。本文使用了try with resources方式關閉資源,這是JDK7的語法糖,讀者可自行搜索。

完整代碼如下。

JDBC的最佳實踐

JDBC是如何實現Java程序和JDBC驅動的松耦合?

JDBC API使用Java的反射機制來實現Java程序和JDBC驅動的松耦合。看一下上文的JDBC示例,你會發現所有操作都是通過JDBC介面完成的,而驅動只有在通過Class.forName反射機制來載入的時候才會出現。

這是Java核心庫里反射機制的最佳實踐之一,它使得應用程序和驅動程序之間進行了隔離,讓遷移資料庫的工作變得更簡單。

Statement和PreparedStatement區別

預編譯

創建時的區別:

執行時的區別:

由上可以看出,PreparedStatement有預編譯的過程,已經綁定sql,之後無論執行多少次,都不會再去進行編譯,而Statement 不同,如果執行多次,則相應的就要編譯多少次sql,所以從這點看,PreparedStatement的效率會比Statement要高一些。PreparedStatement是預編譯的,所以可以有效的防止SQL注入等問題

佔位符

PrepareStatement可以替換變數在SQL語句中可以包含?,可以用?替換成變數。

而Statement只能用字元串拼接。

JDBC的ResultSet

在查詢資料庫後會返回一個ResultSet,它就像是查詢結果集的一張數據表。

ResultSet對象維護了一個游標,指向當前的數據行。開始的時候這個游標指向的是第一行。如果調用了ResultSet的next()方法游標會下移一行,如果沒有更多的數據了,next()方法會返回false。可以在for循環中用它來遍歷數據集。

默認的ResultSet是不能更新的,游標也只能往下移。也就是說你只能從第一行到最後一行遍歷一遍。不過也可以創建可以回滾或者可更新的ResultSet,像下面這樣。

當生成ResultSet的Statement對象要關閉或者重新執行或是獲取下一個ResultSet的時候,ResultSet對象也會自動關閉。

可以通過ResultSet的getter方法,傳入列名或者從1開始的序號來獲取列數據。

ResultSet的不同類型

根據創建Statement時輸入參數的不同,會對應不同類型的ResultSet。如果你看下Connection的方法,你會發現createStatement和prepareStatement方法重載了,以支持不同的ResultSet和並發類型。

ResultSet對象有三種類型。

ResultSet有兩種並發類型。

閱讀全文

與jdbc預編譯連接資料庫相關的資料

熱點內容
編譯iso 瀏覽:938
照片生成pdf格式 瀏覽:194
病歷轉pdf 瀏覽:835
雲伺服器配硬體 瀏覽:978
伺服器10k什麼意思 瀏覽:21
pdfeditor漢化 瀏覽:884
新科學pdf 瀏覽:746
現在還有c語言編譯嗎 瀏覽:674
哪裡買到單片機 瀏覽:480
linux文件打開數量 瀏覽:510
編譯原理中什麼是l屬性文法 瀏覽:371
硬碟加密時出現的問題 瀏覽:61
如何退域命令 瀏覽:108
看書的app哪裡看 瀏覽:291
伺服器怎麼調大 瀏覽:3
android天氣apijson 瀏覽:984
為什麼創建id會出現伺服器錯誤 瀏覽:837
代碼中有不必編譯的單詞嗎 瀏覽:563
鉤子與資料庫編程 瀏覽:563
安卓光遇錄歌怎麼設置 瀏覽:485