7 0 Java JDBC程式設計

2021-09-13 20:16:51 字數 4079 閱讀 8764

目錄

二.mysql 命令列

三.mysql特殊操作

四.mysql常用操作 增刪改查

五.mysql 事務

六.mysql 資料庫連線池

選擇 platform independent

進入mysql命令列:

mysql -u root -p

(輸入密碼)

切換到test資料庫:

mysql> use test;

檢視資料庫表:

mysql> show tables;

1.excute 和 excuteupdate 區別

2.獲取自增 id

3.獲取元資料

1.excute 和 excuteupdate 和 excutequery區別

executequery(string sql)

執行select語句,它返回的是查詢後得到記錄集(resultset)。

executeupdate(string sql)

執行update,insert,delete語句,它返回的是語句執行後說影響到的記錄條數(int)

execute(string sql)

執行任何sql語句,也就是前兩者之和。

當執行結果是查詢語句時,返回true,可以通過getresultset方法獲取結果;

當執行的是update,delete,insert語句時,返回false,可以通過getupdatecount方法獲取更新的記錄數量。

2.獲取自增 id

public int add()

return i;

}catch (sqlexception e)finally

return 0;

}

3.獲取元資料

public void getdatabasemetadata()

}catch (exception e)finally

}

public class connutil catch (exception e)

return null;

}public static void close(object ...objects) else if (object instanceof statement) else if (object instanceof connection)

}}catch (sqlexception e)}}

public class studentdao 

return i;

}catch (sqlexception e)finally

return 0;

}public int delete()catch (sqlexception e)finally

return 0;

}public int update()catch (sqlexception e)finally

return 0;

}public void get()

}catch (sqlexception e)finally

}public void getdatabasemetadata()

}catch (exception e)finally }}

在mysql中,只有當表的型別是innodb的時候,才支援事務,所以需要把錶的型別設定為innodb,否則無法觀察到事務.

修改表的型別為innodb的sql:alter table student engine = innodb;

檢視表的型別的sql show table status from student;

將自動提交設定為 false

手動提交操作

出現錯誤時回滾

public int add()

return i;

}catch ( exception e)catch (exception ex)

}finally

return 0;

}

4.jdbc事務

資料庫事務(transaction)具有acid特性:

atomicity:原子性

consistency:一致性

isolation:隔離性

durability:永續性

jdbc提供了事務的支援

事務隔離級別

isolation level

dirty read

non repeatable read

phantom read

read uncommittedyy

yread committed yy

repeatable read

yserializable 

1.不使用資料庫連線池

2.使用資料庫連線池

3.自己寫資料庫連線池

1.不使用資料庫連線池

當有多個執行緒,每個執行緒都需要連線資料庫執行sql語句的話,那麼每個執行緒都會建立乙個連線,並且在使用完畢後,關閉連線。

建立連線和關閉連線的過程也是比較消耗時間的,當多執行緒併發的時候,系統就會變得很卡頓。

同時,乙個資料庫同時支援的連線總數也是有限的,如果多執行緒併發量很大,那麼資料庫連線的總數就會被消耗光,後續執行緒發起的資料庫連線就會失敗。

2.使用資料庫連線池

與傳統方式不同,連線池在使用之前,就會建立好一定數量的連線。如果有任何執行緒需要使用連線,那麼就從連線池裡面借用,而不是自己重新建立. 使用完畢後,又把這個連線歸還給連線池供下一次或者其他執行緒使用。倘若發生多執行緒併發情況,連線池裡的連線被借用光了,那麼其他執行緒就會臨時等待,直到有連線被歸還回來,再繼續使用。整個過程,這些連線都不會被關閉,而是不斷的被迴圈使用,從而節約了啟動和關閉連線的時間。

3.自己寫資料庫連線池

public class connpool 

public void init()

}catch (exception e)

}public synchronized connection getconn()catch (exception e)

}connection connection=lists.remove(0);

return connection;

}public synchronized void returnconn(connection conn)

public int getsize()

public void setsize(int size)

}

public class workthread extends thread 

@override

public void run() catch (exception e)

connpool.returnconn(connection);

}public connpool getconnpool()

public void setconnpool(connpool connpool)

}

首先初始化乙個有5條連線的資料庫連線池

然後建立100個執行緒,每個執行緒都會從連線池中借用連線,並且在借用之後,歸還連線。 拿到連線之後,執行乙個耗時1秒的sql語句。

public static void main(string args)

}

面試70技巧

1 請你自我介紹一下你自己,1 如果你確實熱愛這個職業,那你就要不斷學習,虛心向領導和同事學習業務知識和處事經驗,了解這個職業的精神內涵和職業要求,力爭減少差距 2 你覺得這個職業可有可無,那還是趁早換個職業,去發現適合你的,你熱愛的職業,那樣你的發展前途也會大點,對單位和個人都有好處。10 在完成...

模擬測試70

t1 根據三角形相似可得 y frac x frac 後面必須是整數,乙個乙個試即可。時間複雜度 o sqrt t2 考慮dp。設 dp i 為以第 i 個點結束的最優代價,s i j 為區間 i,j 的不同值個數。發現當不同值個數大於 sqrt 時,一定不是最有決策。用鍊錶維護可能出現最優決策的點...

leetcode Python實現 70 爬樓梯

描述 假設你正在爬樓梯。需要 n 步你才能到達樓頂。每次你可以爬 1 或 2 個台階。你有多少種不同的方法可以爬到樓頂呢?注意 給定 n 是乙個正整數。示例1 輸入 2 輸出 2 解釋 有兩種方法可以爬到樓頂。1.1 步 1 步 2.2 步 示例2 輸入 3 輸出 3 解釋 有三種方法可以爬到樓頂。...