jdbc是什么意思,java jdbc 詳解_JDBC詳解

 2023-10-08 阅读 32 评论 0

摘要:1、JDBC(Java Database Connection):java連接數據庫統一接口API,底層主要通過直接的JDBC驅動和JDBC-ODBC橋驅動實現與數據庫的連接。1>.JDBC驅動程序類型:jdbc是什么意思,<1>.JDBC-ODBC橋加ODBC驅動程序:需要ODBC驅動,適合于企業網或三

1、JDBC(Java Database Connection):java連接數據庫統一接口API,底層主要通過直接的JDBC驅動和

JDBC-ODBC橋驅動實現與數據庫的連接。

1>.JDBC驅動程序類型:

jdbc是什么意思,<1>.JDBC-ODBC橋加ODBC驅動程序:需要ODBC驅動,適合于企業網或三層結構應用程序

<2>.本地API:需要驅動程序的二進制代碼支持

<3>.JDBC網絡純java驅動程序:將JDBC轉換為與DBMS無關的網絡協議,又被某服務器轉換為一種DBMS

協議,以操作各種數據庫

java。<4>.本地協議純java驅動程序:將JDBC調用直接轉換成JDBC所使用的網絡協議

2、JDBC操作基本流程:

1>.導入驅動:實例化時自動向DriverManager注冊(DriverManager.registerDriver())

<1>.Class.forName(driver)

jdbc java?<2>.Class.forName(driver).newInstance()

<3>.new driver()

2>.取得數據庫連接(Connect to the DataBase)

<1>.用DriverManager取數據庫連接

jdbc使用?Connection cn = DriverManager.getConnection(url,uid,pwd);

<2>.用jndi(java的命名和目錄服務)方式:多用于jsp

Context ctx = (Context) new InitialContext().lookup("java:comp/env");

DataSource ds = (DataSource) ctx.lookup(jndi);

java ssh,Connection cn = ds.getConnection();

3>.執行sql語句(Execute the SQL)

<1>.用Statement來執行sql語句

Statement sm = cn.createStatement();

jdbc數據庫連接池。sm.executeQuery(sql);?// 執行數據查詢語句(select)

sm.executeUpdate(sql);?// 執行數據更新語句(delete、update、insert、drop等)

<2>.用PreparedStatement來執行sql語句

String? sql? = "insert into user (id,name) values (?,?)";

jdbc怎么用?PreparedStatement ps = cn.prepareStatement(sql);

ps.setInt(1,xxx);

ps.setString(2,xxx);

...

jdk的使用,ResultSet rs = ps.executeQuery();?// 查詢

int c = ps.executeUpdate();?// 更新

4>.處理執行結果:

<1>.查詢語句,返回記錄集ResultSet

java jdbc執行sql語句、<2>.更新語句,返回數字,表示該更新影響的記錄數

<3>.ResultSet的方法:while(re.next())

next(),將游標往后移動一行,如果成功返回true;否則返回false

getInt("id")或getSting("name"),返回當前游標下某個字段的值

java resultset?5>.釋放數據庫連接

rs.close();

ps.close(); /stat.close();

con.close();

java的jdbc連接數據庫。3、創建可滾動、更新的記錄集

1>.創建Statement時指定參數:該Statement取得的ResultSet就是可滾動的

Statement sm = cn.createStatement(ResultSet.TYPE_SCROLL_ENSITIVE,

ResultSet.CONCUR_READ_ONLY);

2>.創建PreparedStatement時指定參數

PreparedStatemet ps = cn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,

ResultSet.CONCUR_READ_ONLY);

rs.absolute(9000);

4、批量更新

1>.Statement:可執行多個sql語句(delete、update、insert等或兼有),批量更新

Statement sm = cn.createStatement();

sm.addBatch(sql1);

sm.addBatch(sql2);

...

sm.executeBatch()

2>.PreparedStatement:可把一個sql語句,變換參數多次執行,一次更新

PreparedStatement ps = cn.preparedStatement(sql);

{

ps.setXXX(1,xxx);

...

ps.addBatch();

}

ps.executeBatch();

5、事務的處理

1>.關閉Connection的自動提交

cn.setAutoCommit(false);

2>.執行一系列sql語句:執行新sql前,以前的Statement(或PreparedStatemet)須close

Statement sm ;

sm = cn.createStatement(insert into user...);

sm.executeUpdate();

sm.close();

sm = cn.createStatement("insert into corp...);

sm.executeUpdate();

sm.close();

3>.提交

cn.commit();

4>.如果發生異常,那么回滾

cn.rollback();

6、SQL語句簡介:

1>.Select ... from T Where...

2>.Insert into T(...)values(...)

3>.Create Table T(...)

4>.Delete from T Where ...

5>.Update T set f1=... and f2 =... where ...

6>.Drop table T

7、JDBC示例:

class DBUtil{

//local variable

String driver = null;

String url = null;

Statement stat = null;

//set local variable value

public DBUtil(String driver,String url){

this.driver = driver;

this.url = url;

}

//get con

public Connection getConnection() throws ClassNotFoundException, SQLException{

Connection con = null;

Class.forName(driver);

con = DriverManager.getConnection(url);

return con;

}

//execute select sentence

public List executeQuery(String sql){

ResultSet rs = null;

Connection con = null;

try {

con = getConnection();

Statement stat = con.createStatement();

rs = stat.executeQuery(sql);

while(rs.next()){

rs.getString("");

}

} catch (SQLException e) {

e.printStackTrace();

} catch (ClassNotFoundException ce) {

ce.printStackTrace();

}finally{

try{

if(null == con){

con.close();

con = null;

}

if(null == stat){

stat.close();

stat = null;

}

if(null == rs){

rs.close();

rs = null;

}

} catch (SQLException e) {

e.printStackTrace();

}

}

return null;

}

//execute proceduce

}

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/129165.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息