使用JDBC的五個精華功能
一.批處理:
1.批處理時即可以用statement ,也可以用preparedstatement,一般可用后者。用后者的特點:
PreparedStatement ps = con.prepareStatement(sqlURL+"?,?,?,?,null)");
ps.addBatch(sqlURL);
ps.addBatch(sqlURL2);
ps.addBatch(sqlURL3)
ps.execute()//是用來執(zhí)行初始化語句
ps.executeBatch()//是用來執(zhí)行ps.addBatch中的語句。
對于statement也用此特點。但.createStatement不能初始化.但可用stet.updateExecuate(sql) .
2.批處理有一個完整的sql操作過程的需要。它可以決定操作的回不回退,來確定操作的特征:
使用批處理是要考慮到異常的后果,是否已經(jīng)到達操作的目的。
3.二個表沒辦法通過sql語句合并,只是select 和 jion能獲取一個二個表的結(jié)果集合而已。
唯一的辦法:一個個的讀取,一個個的insert。
4.批處理中不能有b/lob類型進行preparedStatement.setC/Blob()。
二.SQL語句:
1.對于update,insert等都可以用?表示當時未用,然后對其進行setxxx("")即補上.
2.對于integer類型的字段可以采用自動增長的方式:*聲明標的方式如下:
createURL=CREATE TABLE netPage( orderList INT AUTO_INCREMENT, url VARCHAR(200), title VARCHAR(50), createTime DATE, file TEXT,PRIMARY key(orderList), KEY(url) )
注當設(shè)定二個KEY值時,數(shù)據(jù)庫先檢驗***個key,如果沒有相同的就不檢驗第二個,如果有才檢驗。只有當某行的二個key都一樣時才報錯。
3.當要對表進行清空要用TRUNCATE TABLE netpagebak,如果用delete *的話,就會當表為空時,回報錯 。
4.DELETE netPageBak.* FROM netPageBak,netPage WHERE netPageBak.url=netPage.url 的意思是:
從netPageBak中刪除含有與netpage中url相同的url行。
5.在用到數(shù)據(jù)庫的字段是要回避含有:的string作為某一個字段的值。會出異常的(sql語法不對)。
6.使用RowSet.getString(int),該int從1開始對應相關(guān)的列字段。
三.數(shù)據(jù)類型:
1.在用到where語句的條件是:=null;將會被認為沒有條件一樣,即使對應的確實有字段的值為null.一搬在該字段為null時,可用該字段的默認值,或空值。
2??捎胠imit語句對檢索的行數(shù)結(jié)果限制。例:
SELECT * FROM netPage WHERE createTime="" LIMIT 10
注:LIMIT 接受一個或兩個數(shù)字參數(shù)。參數(shù)必須是一個整數(shù)常量。如果給定兩個參數(shù),***個參數(shù)指定***個返回記錄行的偏移量(從第幾行開始)(可選),第二個參數(shù)指定返回記錄行的***數(shù)目。這是mysql的使用方法,其他數(shù)據(jù)庫有類似的操作。
四.異常:
1。在設(shè)計方法來共享同一個connection 時,要注意有關(guān)異常產(chǎn)生的情況,可能導致connection沒有及時關(guān)閉,因此要在每一個異常出現(xiàn)時設(shè)置關(guān)閉connection
2.java.sql.SQLException: Unable to connect to any hosts due to exception: java.net.ConnectException: Connection refused: connect
at com.mysql.jdbc.Connection.createNewIO(Connection.java:1797)
at com.mysql.jdbc.Connection.<init>(Connection.java:562)
其異常是由于數(shù)據(jù)庫的連接出問題了。
五.數(shù)據(jù)庫大對象:
一.當有大對象的使用:
1.COLB是代表大的數(shù)據(jù)(字符型) Blob代表大的二進制數(shù)據(jù)類型 對于這些大對象而言在初始的時候要付null值否則會出錯。
2.在用到sql語句的時候一定要保證語句的完整性。:
◆用逗號表示字段之間的間隔。
◆對于含values的語句注意括符的匹配。
◆當用字符串表示sql語句是要注意''號來表示字符串。
例:sqlURL=sqlURL+num+",'"+hsStr+"','"+title+"','"+date.toString()+"',"+null+");";
注:sql結(jié)尾可無;
3.一般不采用blob,clob,而采用long,long raw的原因是:需要平臺的支持。
【編輯推薦】