1、JDBC訪問數(shù)據(jù)庫的基本步驟是什么?
(更多面試題推薦:java面試題及答案)
加載驅(qū)動
通過DriverManager對象獲取連接對象Connection
通過連接對象獲取會話
通過會話進(jìn)行數(shù)據(jù)的增刪改查,封裝對象
關(guān)閉資源
2、說說preparedStatement和Statement的區(qū)別
效率:預(yù)編譯會話比普通會話對象,數(shù)據(jù)庫系統(tǒng)不會對相同的sql語句不會再次編譯
安全性:可以有效的避免sql注入攻擊!sql注入攻擊就是從客戶端輸入一些非法的特殊字符,而使服務(wù)器端在構(gòu)造sql語句的時候仍然能夠正確構(gòu)造,從而收集程序和服務(wù)器的信息和數(shù)據(jù)。
比如:
“select * from t_user where userName = ‘” + userName + “ ’ and password =’” + password + “’”
如果用戶名和密碼輸入的是’1’ or ‘1’=’1’ ; 則生產(chǎn)的sql語句是:
“select * from t_user where userName = ‘1’ or ‘1’ =’1’ and password =’1’ or ‘1’=’1’
這個語句中的where 部分沒有起到對數(shù)據(jù)篩選的作用。
3、說說事務(wù)的概念,在JDBC編程中處理事務(wù)的步驟
事務(wù)是作為單個邏輯工作單元執(zhí)行的一系列操作。
一個邏輯工作單元必須有四個屬性,稱為原子性、一致性、隔離性和持久性 (ACID) 屬性,只有這樣才能成為一個是事務(wù)
事務(wù)處理步驟:
conn.setAutoComit(false);設(shè)置提交方式為手工提交
conn.commit()提交事務(wù)
出現(xiàn)異常,回滾 conn.rollback();
4、數(shù)據(jù)庫連接池的原理。為什么要使用連接池。
數(shù)據(jù)庫連接是一件費(fèi)時的操作,連接池可以使多個操作共享一個連接。
數(shù)據(jù)庫連接池的基本思想就是為數(shù)據(jù)庫連接建立一個“緩沖池”。預(yù)先在緩沖池中放入一定數(shù)量的連接,當(dāng)需要建立數(shù)據(jù)庫連接時,只需從“緩沖池”中取出一個,使用完畢之后再放回去。我們可以通過設(shè)定連接池最大連接數(shù)來防止系統(tǒng)無盡的與數(shù)據(jù)庫連接。更為重要的是我們可以通過連接池的管理機(jī)制監(jiān)視數(shù)據(jù)庫的連接的數(shù)量、使用情況,為系統(tǒng)開發(fā),測試及性能調(diào)整提供依據(jù)。
使用連接池是為了提高對數(shù)據(jù)庫連接資源的管理
(相關(guān)推薦:java入門教程)
5、JDBC的臟讀是什么?哪種數(shù)據(jù)庫隔離級別能防止臟讀?
當(dāng)我們使用事務(wù)時,有可能會出現(xiàn)這樣的情況,有一行數(shù)據(jù)剛更新,與此同時另一個查詢讀到了這個剛更新的值。這樣就導(dǎo)致了臟讀,因為更新的數(shù)據(jù)還沒有進(jìn)行持久化,更新這行數(shù)據(jù)的業(yè)務(wù)可能會進(jìn)行回滾,這樣這個數(shù)據(jù)就是無效的。數(shù)據(jù)庫的TRANSACTIONREADCOMMITTED,TRANSACTIONREPEATABLEREAD,和TRANSACTION_SERIALIZABLE隔離級別可以防止臟讀。
6、什么是幻讀,哪種隔離級別可以防止幻讀?
幻讀是指一個事務(wù)多次執(zhí)行一條查詢返回的卻是不同的值。假設(shè)一個事務(wù)正根據(jù)某個條件進(jìn)行數(shù)據(jù)查詢,然后另一個事務(wù)插入了一行滿足這個查詢條件的數(shù)據(jù)。之后這個事務(wù)再次執(zhí)行了這條查詢,返回的結(jié)果集中會包含剛插入的那條新數(shù)據(jù)。這行新數(shù)據(jù)被稱為幻行,而這種現(xiàn)象就叫做幻讀。
只有TRANSACTION_SERIALIZABLE隔離級別才能防止產(chǎn)生幻讀。
7、JDBC的DriverManager是用來做什么的?
JDBC的DriverManager是一個工廠類,我們通過它來創(chuàng)建數(shù)據(jù)庫連接。當(dāng)JDBC的Driver類被加載進(jìn)來時,它會自己注冊到DriverManager類里面
然后我們會把數(shù)據(jù)庫配置信息傳成DriverManager.getConnection()方法,DriverManager會使用注冊到它里面的驅(qū)動來獲取數(shù)據(jù)庫連接,并返回給調(diào)用的程序。
8、execute,executeQuery,executeUpdate的區(qū)別是什么?
Statement的execute(String query)方法用來執(zhí)行任意的SQL查詢,如果查詢的結(jié)果是一個ResultSet,這個方法就返回true。如果結(jié)果不是ResultSet,比如insert或者update查詢,它就會返回false。我們可以通過它的getResultSet方法來獲取ResultSet,或者通過getUpdateCount()方法來獲取更新的記錄條數(shù)。
Statement的executeQuery(String query)接口用來執(zhí)行select查詢,并且返回ResultSet。即使查詢不到記錄返回的ResultSet也不會為null。我們通常使用executeQuery來執(zhí)行查詢語句,這樣的話如果傳進(jìn)來的是insert或者update語句的話,它會拋出錯誤信息為 “executeQuery method can not be used for update”的java.util.SQLException。
Statement的executeUpdate(String query)方法用來執(zhí)行insert或者update/delete(DML)語句,或者 什么也不返回,對于DDL語句,返回值是int類型,如果是DML語句的話,它就是更新的條數(shù),如果是DDL的話,就返回0。
只有當(dāng)你不確定是什么語句的時候才應(yīng)該使用execute()方法,否則應(yīng)該使用executeQuery或者executeUpdate方法。
9、SQL查詢出來的結(jié)果分頁展示一般怎么做?
Oracle:
select * from (select *,rownum as tempid from student ) t where t.tempid between ” + pageSize*(pageNumber-1) + ” and ” + pageSize*pageNumber
MySQL:
select * from students limit ” + pageSize*(pageNumber-1) + “,” + pageSize;
sql server:
select top ” + pageSize + ” * from students where id not in + (select top ” + pageSize * (pageNumber-1) + id from students order by id) + “order by id;
(視頻教程推薦:java課程)
10、JDBC的ResultSet是什么?
在查詢數(shù)據(jù)庫后會返回一個ResultSet,它就像是查詢結(jié)果集的一張數(shù)據(jù)表。
ResultSet對象維護(hù)了一個游標(biāo),指向當(dāng)前的數(shù)據(jù)行。開始的時候這個游標(biāo)指向的是第一行。如果調(diào)用了ResultSet的next()方法游標(biāo)會下移一行,如果沒有更多的數(shù)據(jù)了,next()方法會返回false。可以在for循環(huán)中用它來遍歷數(shù)據(jù)集。
默認(rèn)的ResultSet是不能更新的,游標(biāo)也只能往下移。也就是說你只能從第一行到最后一行遍歷一遍。不過也可以創(chuàng)建可以回滾或者可更新的ResultSet。
當(dāng)生成ResultSet的Statement對象要關(guān)閉或者重新執(zhí)行或是獲取下一個ResultSet的時候,ResultSet對象也會自動關(guān)閉。
可以通過ResultSet的getter方法,傳入列名或者從1開始的序號來獲取列數(shù)據(jù)。
Atas ialah kandungan terperinci java高頻率基礎(chǔ)面試題——(五). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Untuk mengendalikan transaksi JDBC dengan betul, anda mesti terlebih dahulu mematikan mod komit automatik, kemudian melakukan pelbagai operasi, dan akhirnya melakukan atau mengembalikan semula hasilnya; 1. Panggil Conn.SetAutOcommit (palsu) untuk memulakan transaksi; 2. Melaksanakan pelbagai operasi SQL, seperti memasukkan dan mengemaskini; 3. Panggil Conn.Commit () jika semua operasi berjaya, dan hubungi conn.rollback () jika pengecualian berlaku untuk memastikan konsistensi data; Pada masa yang sama, cuba-dengan-sumber harus digunakan untuk menguruskan sumber, mengendalikan pengecualian dengan betul dan menutup sambungan untuk mengelakkan kebocoran sambungan; Di samping itu, adalah disyorkan untuk menggunakan kolam sambungan dan menetapkan mata simpan untuk mencapai rollback separa, dan menyimpan urus niaga sesingkat mungkin untuk meningkatkan prestasi.

THEJVMenableSjava's "Writeonce, Runanywhere" keupayaanByExecutingByteCodeThroughFourMaincomponents: 1.TheClassloadersubsystemloads, pautan, danInitializes.ClassFilesusingBootstrap, Extension, andapplicationClassloaders, EnsuringseCureAndlazyCon

Gunakan kelas dalam pakej Java.Time untuk menggantikan kelas lama dan kelas kalendar; 2. Dapatkan tarikh dan masa semasa melalui LocalDate, LocalDateTime dan Tempatan Tempatan; 3. Buat tarikh dan masa tertentu menggunakan kaedah (); 4. Gunakan kaedah tambah/tolak untuk meningkatkan dan mengurangkan masa; 5. Gunakan zoneddatetime dan zonid untuk memproses zon waktu; 6. Format dan parse date string melalui DateTimeFormatter; 7. Gunakan segera untuk bersesuaian dengan jenis tarikh lama apabila perlu; pemprosesan tarikh di java moden harus memberi keutamaan untuk menggunakan java.timeapi, yang memberikan jelas, tidak berubah dan linear

Pra-formancetartuptimemoryusage, quarkusandmicronautleadduetocompile-timeprocessingandgraalvsupport, withquarkusoftenperforminglightbetterine serverless scenarios.tyvelopecosyste,

NetworkPortsandFireWallSworkTogethertoenableCommunicationWileensuringsecurity.1.networkportsarevirtualendpointsNumbered0-655 35, Withwell-KnownportsLike80 (http), 443 (https), 22 (ssh), dan25 (smtp) identitispecificservices.2.portsoperateovertcp (boleh dipercayai, c

Koleksi Sampah Java (GC) adalah mekanisme yang secara automatik menguruskan ingatan, yang mengurangkan risiko kebocoran ingatan dengan menuntut semula objek yang tidak dapat dicapai. 1.GC menghakimi kebolehcapaian objek dari objek akar (seperti pembolehubah stack, benang aktif, medan statik, dan lain -lain), dan objek yang tidak dapat dicapai ditandakan sebagai sampah. 2. Berdasarkan algoritma penandaan tanda, tandakan semua objek yang dapat dicapai dan objek yang tidak ditandai. 3. Mengamalkan strategi pengumpulan generasi: Generasi Baru (Eden, S0, S1) sering melaksanakan MinorGC; Orang tua melakukan kurang tetapi mengambil masa lebih lama untuk melakukan MajorGC; Metaspace Stores Metadata kelas. 4. JVM menyediakan pelbagai peranti GC: SerialGC sesuai untuk aplikasi kecil; ParallelGC meningkatkan throughput; CMS mengurangkan

GradleisthebetterChoiceFormostNewProjectSduetoitSsuperiorflexibility, Prestasi, danModernToolingSupport.1.Gradle'sGroovy/KOT lindslismoreconciseandexpressivethanmaven'sverbosexml.2.GradleOutPerformsMaveninBuildSpeedWithIncrementalcompilation, BuildCac

Defer digunakan untuk melaksanakan operasi tertentu sebelum fungsi pulangan, seperti sumber pembersihan; Parameter dinilai dengan serta-merta apabila menangguhkan, dan fungsi-fungsi dilaksanakan mengikut urutan terakhir (LIFO); 1. Pelbagai penahanan dilaksanakan dalam urutan terbalik pengisytiharan; 2. Biasanya digunakan untuk pembersihan yang selamat seperti penutupan fail; 3. Nilai pulangan yang dinamakan boleh diubah suai; 4. Ia akan dilaksanakan walaupun panik berlaku, sesuai untuk pemulihan; 5. Elakkan penyalahgunaan menangguhkan gelung untuk mengelakkan kebocoran sumber; Penggunaan yang betul boleh meningkatkan keselamatan kod dan kebolehbacaan.
