目錄
二.mysql 命令列
三.mysql特殊操作
四.mysql常用操作 增刪改查
五.mysql 事務
六.mysql 資料庫連線池
選擇 platform independent
進入mysql命令列:
mysql -u root -p
(輸入密碼)
切換到test資料庫:
mysql> use test;
檢視資料庫表:
mysql> show tables;
1.excute 和 excuteupdate 區別1.excute 和 excuteupdate 和 excutequery區別2.獲取自增 id
3.獲取元資料
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.不使用資料庫連線池1.不使用資料庫連線池2.使用資料庫連線池
3.自己寫資料庫連線池
當有多個執行緒,每個執行緒都需要連線資料庫執行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 解釋 有三種方法可以爬到樓頂。...