Panimula sa mga Pahayag
Ang lahat ng mga query sa SQL ay maaaring nahahati sa dalawang pangkat na may kondisyon:
- Pagkuha ng data − Kabilang dito ang SELECT statement .
- Pagbabago ng data − Kabilang dito ang INSERT , UPDATE , at DELETE na mga pahayag .
Para sa unang pangkat, ang paraan ng interface ng Pahayag na pamilyar sa amin ay ginagamit - executeQuery() . Sa prinsipyo, ang pamamaraang ito ay sapat na upang makapagsimula. Sinasaklaw nito ang napakalaking porsyento ng mga query na kakailanganin mong gamitin sa isang tunay na trabaho.
Papasok tayo sa higit pang mga opsyon sa ibang pagkakataon, ngunit sa ngayon, ipinapayo ko sa iyo na tandaan - kung gusto mo lang makakuha ng data mula sa isang talahanayan, ang paraan ng executeQuery () sa karamihan ng mga kaso ang magiging tamang pagpipilian.
Para sa pangalawang pangkat ng mga kahilingan, kailangan mong gumamit ng isa pang paraan ng interface ng Pahayag - executeUpdate() . Hindi tulad ng executeQuery() method , na nagbabalik ng ResultSet, ang pamamaraang ito ay nagbabalik ng integer na nagsasabi sa iyo kung ilang row sa talahanayan ang nabago noong naisakatuparan ang iyong query .
Halimbawa, maaari mong tanggalin ang lahat ng mga row na may DELETE FROM na pahayag ng empleyado (kaya maging maingat). Sa kasong ito, ibabalik ng paraan ng executeUpdate() ang bilang ng mga tinanggal na row. Sa ilang sitwasyon, ang pag-alam sa bilang ng mga binagong row ay maaaring maging kapaki-pakinabang para sa pagbuo ng mga algorithm para sa pagtatrabaho sa data.
Sa prinsipyo, maaari nating tapusin ang tanong na ito - nakita na natin ang pangunahing bagay. Para sa pagkuha ng data - executeQuery() . Upang baguhin ang data - executeUpdate() .
Kunin ang bilang ng mga user sa talahanayan ng user gamit ang executeQuery() na paraan :
ResultSet results = statement.executeQuery("SELECT Count(*) FROM user");
results.next();
int count = results.getInt(1);
executeUpdate()
Ang executeUpdate() na pamamaraan ay ginagamit kapag ang iyong query ay nagbago ng isang bagay sa isang talahanayan. Maaaring kahit ano:
- I-UPDATE ang pahayag
- INSERT na pahayag
- I-DELETE ang pahayag
- PAMAMARAAN NG TAWAG pahayag
Ibinabalik ng pamamaraang ito ang bilang ng mga binago (o tinanggal) na mga hilera.
Sumulat tayo ng isang kahilingan na magtataas ng suweldo ng lahat ng ating mga empleyado ng 1000 rubles.
int rowsCount = statement.executeUpdate("UPDATE employee SET salary = salary+1000");
Pagkatapos kong patakbuhin ang code na ito, ibinalik nito ang numero 6 sa aking mesa. Ang aking talahanayan ay may 6 na hanay. Kaya lahat ng linya ay binago.
execute()
Minsan, maaaring magkaroon ng mga sitwasyon sa iyong buhay kapag hindi mo alam nang eksakto kung anong kahilingan ang kailangan mong isagawa - isang pagpipilian o isang pagbabago ng data. Sa kasong ito, ang mga tagalikha ng JDBC ay nagdagdag ng isa pang generic na paraan dito - execute() .
Ang pamamaraang ito ay maaaring gamitin bilang kapalit ng executeQuery() at executeUpdate() na mga pamamaraan. Naaalala mo ba kung paano naiiba ang mga pamamaraang ito? Tama. Uri ng resulta. Samakatuwid, ang mga tagalikha ng JDBC ay nakaisip ng ganoong solusyon.
Ang execute() na pamamaraan ay nagbabalik ng boolean. Kung true ang value na ito , may kasalukuyang kahilingan sa pagkuha ng data, at kailangan mong tawagan ang getResultSet() method para makuha ang data. Halimbawa:
boolean hasResults = statement.execute("SELECT Count(*) FROM user");
if ( hasResults ) {
ResultSet results = statement.getResultSet();
results.next();
int count = results.getInt(1);
}
Kung false ang value na ito , may kasalukuyang kahilingan sa pagbabago ng data, at kailangan mong tawagan ang getUpdateCount() method para makuha ang bilang ng mga row na binago. Halimbawa:
boolean hasResults = statement.execute("UPDATE employee SET salary = salary+1000");
if ( !hasResults ) {
int count = statement.getUpdateCount();
}
Sumulat tayo ng isang paraan na nagpapakita ng resulta ng isang query:
public void executeAndPrintSQLQuery(String sqlQuery) {
boolean hasResults = statement.execute(sqlQuery);
if ( hasResults ) {
ResultSet results = statement.getResultSet();
System.out.println(“Your request lines below: ”);
while (results.next()) {
Integer id = results.getInt(1);
String name = results.getString(2);
System.out.println(results.getRow() + ". " + id + "\t"+ name);
}
}
else {
int count = statement.getUpdateCount();
System.out.println(“Number of name strings: ” + count);
}
}
Ito ay kung paano ang execute() na pamamaraan ay karaniwang ginagamit sa pagsasanay.
GO TO FULL VERSION