JSP企業面試題整理(5)
7-2 圖示JDBC的工作原理,並列舉常用的對象。(企業筆試題)
建立是建立與資料庫之間的串連,也就是建立一個Connection的執行個體。DriverManager類的getConnection()方法將建立資料庫的串連:
Statement對象用於將SQL語句發送到資料庫中。存在3種Statement對象:(1)Statement;(2)PreparedStatement(從Statement繼承而來);(3)CallableStatement(從PreparedStatement繼承而來)。
ResultSet包含符合SQL語句執行結果所有行,並且它通過一套get方法提供了對這些行中資料的訪問
7-3 7-16,要求:尋找 “張三”選擇所有課程的名稱,寫出SQL語句。(企業筆試題)
SELECT c.cname FROM sc a, student b, course c
WHERE a.cno=c.cno
AND a.sno=b.sno and b.sname ='張三'
7-4 下面的程式碼片段是否正確?請說明。(企業筆試題)
pst = conn.prepareStatement("INSERT INTO grade(學號) VALUES (?)");
for (int i = 101; i < 111; i++) {
pst.setInt(1, i);
pst.addBatch();
}
pst.execute ();
}
錯,pst.executeBatch();
7-5 簡述事務的基本概念,如何在JDBC中實現事務?
事務是一些事件的集合,執行一條SQL語句可以理解成一個事件。事務中包含多個事件,如果每一個事件都能執行成功的時候,事務才執行,如果有任何一個事件不能成功執行,事務的其他事件也不被執行
boolean defaultCommit = conn.getAutoCommit();
conn.setAutoCommit(false);
try {
stmt.executeUpdate(strSQL1);
stmt.executeUpdate(strSQL2);
conn.commit();
}
catch (Exception e) {
conn.rollback();
e.printStackTrace();
}
finally {
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
}
conn.setAutoCommit(defaultCommit);
7-6 結果集類型和結果集並發性各有幾種情況,有什麼作用。
決定這個Statement對象建立的ResultSet對象是否可以滾動,還可以指定結果集是否對資料庫中的修改敏感。使用ResultSet類中的int常量來表示結果集類型,結果集類型有3種:
l ResultSet.TYPE_FORWORD_ONLY:指定ResultSet對象是不可滾動,這是預設值。
l ResultSet.TYPE_SCOLL_INSENSITIVE:指定ResultSet對象是可滾動的,但是對資料庫中修改不敏感。
l ResultSet.TYPE_SCOLL_SENSITIVE:指定ResultSet對象是可滾動的,而且對資料庫的修改敏感。
結果集的並發性(Concurrency)決定ResultSet對象是否可以修改資料庫中的行。可以使用ResultSet類中定義的int常量來指定結果集的並發性。
l ResultSet.CONCUR_READ_ONLY,指定ResultSet對象不能修改資料庫,預設值。
ResultSet.CONCUR_UPDATABLE,指定ResultSet對象可以修改資料庫。