JDBC
JDBC的全稱為:Java Database Connectivity世剖,即java數(shù)據(jù)庫連接足绅。 使用JDBC開發(fā)程序,不僅可以跨數(shù)據(jù)庫躬贡,而且還是跨平臺的,也就是說使用JDBC開發(fā)的程序可以在windows和unix上使用眼坏,同時可以針對mysql和oracle等其他數(shù)據(jù)庫拂玻,而程序不需要做任何的修改酸些。
mysql的連接命令如下:
mysql -p 密碼 -u 用戶名 -h 主機名
這也可以連接遠程主機。 mysql 數(shù)據(jù)庫通常支持以下兩種存儲機制:
- MyISAM:這是mysql早期默認的存儲機制檐蚜,對事務的支持不夠好魄懂。
- InnoDB:InnoDB提供了事務安全的存儲機制。InnoDB通過建立行級鎖來保證事物完整性闯第。
DDL 數(shù)據(jù)定義語言:create alter drop truncate DML 數(shù)據(jù)操作語言:insert update delete DCL 數(shù)據(jù)控制語言:grant revoke
create table/index/view/function/procedure/trigger…
創(chuàng)建表的過程:
create table [模式名.]表名 { columnName1 datatype [default expr], … }
數(shù)據(jù)庫字段類型:
- tinyint/smallint/mediumint/int/bigint
- float/double
- decimal(dec)
- date
- time
- datetime
- timstamp(時間戳)
- year
- char
- varchar
- binary
- varbinary
- tinyblob/blob/mediumblob/longblob
- tinytext/text/mediumtext/longtext
- enum(‘value1’,’value2’…) 其中的一個
- set(‘value1’,’value2’…) 其中的幾個
JDBC 的編程步驟:
- 加載數(shù)據(jù)庫的驅(qū)動:
Class.forName(driverClass),dirverClass對應數(shù)據(jù)庫驅(qū)動類的字符串市栗。如果針對mysql就是: Class.forName(“com.mysql.jdbc.Driver”);
- 通過DriverManager來獲取數(shù)據(jù)庫的連接,方法如下:
DriverManager.getConnection(String url, String user, String pass)
url/user/pass 分別代表咳短,數(shù)據(jù)庫的連接地址填帽,用戶名和密碼,url針對不同的數(shù)據(jù)庫有不同的地址咙好,這個可以針對每個數(shù)據(jù)庫的jdbc文檔進行查看篡腌,如果針對mysql的數(shù)據(jù)庫,可以使用如下的方式來連接數(shù)據(jù):
jdbc:mysql://hostname:port/databasename
如果是針對oracle的連接勾效,則url地址如下:
jdbc:oracle:thin:@hostname:port:databasename
- 通過Connection對象創(chuàng)建Statement對象嘹悼。Connection來創(chuàng)建Statement方法有如下三個:
createStatement(): 創(chuàng)建Statement對象
prepareStatement(String sql): 根據(jù)傳入的sql語句,通過數(shù)據(jù)的預編譯层宫,創(chuàng)建預編譯的Statement對象杨伙。
prepareCall(Stirng sql): 根據(jù)傳入的sql語句創(chuàng)建預編譯的CallableSattement對象。
- 使用Statement來執(zhí)行sql語句卒密,但是執(zhí)行的時候有如下的三種方式:
execute():可以執(zhí)行任何的sql語句
executeUpdate(): 主要執(zhí)行DML DDL 返回受sql影響的行數(shù)缀台,執(zhí)行DCL的時候返回0
executeQuery() 執(zhí)行查詢語句,返回結(jié)果集ResultSet對象
如果是查詢語句哮奇,返回的是ResultSet對象膛腐,針對ResultSet對象主要提供如下的操作,next() previous() last() beforeFirst() afterLast() 等方法來移動指針鼎俘。同時可以針對每一條記錄可以使用getXxx()方式來獲取數(shù)據(jù)哲身。
回收數(shù)據(jù)庫的資源。