Pahayag ng JDBC at PreparedStatement

Anonim

Bago tayo lumipat sa pagkakaiba, pag-unawa natin kung ano ang una sa JDBC.

Ang JDBC (Java Database Connectivity) ay isang Java API upang kumonekta at magsagawa ng mga query sa database. Ito ang pamantayan ng industriya para sa pagkakabukod ng database-independyenteng nagbibigay ng unibersal na pag-access ng data, lalo na ang data na nakaimbak sa Mga Relational Database. Gumagamit ito ng mga driver ng JDBC na nakasulat sa wika ng Java programming upang kumonekta sa anumang aplikasyon ng Java sa database. Ito ay nagbibigay-daan sa amin upang kumonekta sa lahat ng mga database ng korporasyon kahit na sa isang magkakaiba na kapaligiran.

Pahayag at PreparedStatement ay mga klase na kumakatawan sa mga pahayag ng SQL upang makipag-ugnayan sa database server. Talakayin natin ito nang detalyado at ipaliwanag ang pagkakaiba ng dalawa.

Ano ang Pahayag?

Pahayag ay isang interface ng JDBC na ginagamit para sa pangkalahatang layunin ng pag-access sa database ng SQL, lalo na habang gumagamit ng static na pahayag ng SQL sa runtime.

Tinutukoy nito ang mga pamamaraan at mga katangian upang makipag-ugnay sa database gamit ang SQL o PL / SQL command. Ito ay ginagamit upang maisagawa ang karaniwang mga pahayag ng SQL tulad ng LUMIKHA, UPDATE, RETREIVE, at DELET (CRUD). Gumagana ito bilang isang carrier sa pagitan ng isang programa ng Java at ang database ngunit hindi ito maaaring tanggapin ang mga parameter sa runtime at hindi pre-compiled na kahulugan ang parehong SQL pahayag ay hindi maaaring gamitin ng maraming beses na account para sa mabagal na pagganap kaysa sa PreparedStatement. Ito ay mas madaling kapitan sa SQL Injection.

Ano ang PreparedStatement?

Ito ay isang pinalawig at ang makapangyarihang bersyon ng interface ng Pahayag na maaaring o hindi maaaring maging parameterized na ibig sabihin ay hindi katulad ng Pahayag, maaari itong tumagal ng mga parameter ng pag-input na nagsasaad ng mas mabilis na pagganap.

Tinutulungan din nito na isulat ang Object Oriented code sa mga pamamaraan ng setter na nagpapabuti sa pagganap ng mga application. At ang pinakamagandang bahagi, ito ay pinaandar sa pamamagitan ng isang komunikasyon protocol ng binary na hindi binubuo ng SQL na karaniwang isang di-textual na nakabatay sa format na ginagamit upang makipag-usap sa pagitan ng mga kliyente at mga server na sa huli ay binabawasan ang paggamit ng bandwidth at sa gayon ay nagpo-promote ng mas mabilis na mga tawag sa komunikasyon sa server.

Sa simpleng mga termino, ito ay isang bagay na kumakatawan sa isang pre-naipon na pahayag ng SQL.

Pagkakaiba sa pagitan ng Pahayag ng JDBC at PreparedStatement

Basic

Pahayag ng JDBC at PreparedStatement ay mga klase na kumakatawan sa mga pahayag ng SQL upang magpadala ng SQL o PL / SQL command at makatanggap ng data mula sa database. Ang interface ng Pahayag ay nagbibigay ng mga pamamaraan at mga katangian upang maipatupad ang mga query at pagbabago sa database. Ito ay isang interface na ginagamit para sa pangkalahatang layunin ng access sa database ngunit hindi ito maaaring tanggapin SA at OUT parameter. Ang interface ng PreparedStatement, sa kabilang banda, ay nagpapalawak sa interface ng Pahayag at ginagamit upang isagawa ang isang pre-naipon na pahayag ng SQL sa JDBC upang ang parehong pahayag ng SQL ay maaaring gamitin nang maraming beses.

Pahayag ng Precompiled

Hindi tulad ng isang Pahayag ng JDBC, ang PreparedStatement ay isang precompiled na pahayag na nangangahulugang kapag ito ay naisakatuparan, ang DBMS ay maaaring magpatakbo ng pahayag ng SQL nang hindi kailangan upang maipon ito muna. Sa simpleng mga termino, ang Mga Pahayag ay maaaring tumakbo ng maraming beses nang hindi na kinakailangang sumulat ng libro ito sa bawat oras. Ang lahat ng ito ay pahabain ang interface ng Pahayag at idagdag ang kakayahang gumamit ng mga variable na magbubuklod. Pinapayagan nito ang mas mabilis na pagpapatupad, lalo na kapag ginagamit ito sa mga batch. Ang Pahayag, sa kabilang banda, ay hindi precompiled na ginagawang mas maaasahan kaysa sa PreparedStatement.

Mga Parameter sa Pag-input

Ang interface ng Pahayag ay hindi maaaring pumasa sa mga parameter sa mga query sa SQL sa runtime dahil maaari lamang itong magamit upang maisagawa ang mga static na pahayag ng SQL at hindi ito maaaring tumanggap ng mga parameter ng input. Ang isang input parameter ay isang placeholder sa isang pahayag ng SQL na ginagamit upang makipagpalitan ng data sa pagitan ng mga nakaimbak na pamamaraan at pag-andar. Ang PreparedStatement interface, sa kabaligtaran, ay maaaring pumasa sa mga parameter sa mga query sa SQL sa runtime at maaari itong magkaroon ng isa o higit pa sa mga parameter na sa huli ay nagpapahintulot sa amin na magsagawa ng mga dynamic na query.

Binary Communication Protocol

Ang PreparedStatement ay naisakatuparan sa pamamagitan ng isang komunikasyon protocol ng binary na di-SQL na nangangahulugan na ang isang non-textual based na format ay ginagamit upang makipag-usap sa pagitan ng mga kliyente at mga server sa halip ng hindi gaanong mahusay na protocol ng teksto. Sa binary protocol, ang data ay ipinadala sa binary form na kung saan ay mas mabilis na ma-parse at ang pinakamabilis at ang pinaka mahusay na paraan upang ma-interface ng isang client sa isang server. Nagreresulta ito sa mas kaunting paggamit ng bandwidth at mas mabilis na mga tawag sa komunikasyon sa server na sa huli ay nagpapabilis ng mga bagay na may paulit-ulit na mga query sa pagpili. Walang ganoong protocol na ipinatupad sa interface ng Pahayag.

SQL Injection

Ito ay tumutukoy sa isang atake sa pag-iniksyon na maaaring sirain ang database. Ito ay isa sa mga pinakakaraniwang pamamaraan upang mag-inject ng malisyosong code sa mga pahayag ng SQL upang manipulahin ang database sa pagbubunyag ng mga nilalaman sa magsasalakay. Ang isang nakakahamak na code ay iniksyon sa isang application at pagkatapos ay ipinasa sa SQL database upang makakuha ng access sa iba't ibang mga mapagkukunan o gumawa ng mga pagbabago sa data. Ang PreparedStatement ay nababanat laban sa SQL injection dahil ginagamit nito ang mga parameterized query upang awtomatikong makatakas sa mga espesyal na character tulad ng mga quote. Pahayag ay hindi maaaring makatakas sa SQL iniksyon habang ginagamit namin concatenated SQL string sa JDBC.

Pahayag kumpara sa PreparedStatement: Tsart ng Paghahambing

Buod ng Pahayag ng JDBC kumpara sa PreparedStatement

Ang JDBC Statement at PreparedStatement interface ay tumutukoy sa mga pamamaraan at mga katangian upang magpadala at tumanggap ng data mula sa SQL database.Habang ang isang pangunahing Pahayag ay sapat na upang maisagawa ang simpleng pahayag ng SQL, mahirap matalo ang kakayahang umangkop at ang mga benepisyo na ibinigay sa pamamagitan ng paggamit ng PreparedStatement. Habang ang interface ng Pahayag ay isang pangkalahatang carrier ng layunin na ginagamit upang maisagawa ang mga pahayag ng static SQL, ang PreparedStatement ay isang parameterized statement na ginagamit upang maisagawa ang mga dynamic na pahayag ng SQL. Ang pangunahing pagkakaiba sa pagitan ng dalawa ay ang PreparedStatement ay isang pre-compiled na pahayag na nangangahulugang ang parehong command na SQL ay maaaring gamitin ng maraming beses na mga account para sa mas mahusay na pagganap at mas mabilis na mga resulta.