CodeGym/Java Course/All lectures for TA purposes/தயார்நிலை அறிக்கையுடன் பணிபுரிதல்

தயார்நிலை அறிக்கையுடன் பணிபுரிதல்

கிடைக்கப்பெறுகிறது

அறிக்கைகளின் வகைகள்

எளிமையான அறிக்கை இடைமுகத்தை நாம் ஏற்கனவே பார்த்துள்ளோம் . இது வேலைக்கு மிகவும் பொருத்தமானது என்றாலும், சிக்கலான வினவல்களுக்கு இது மிகவும் பொருத்தமானது அல்ல. சில ஆதாரங்களில், அறிக்கையைப் பயன்படுத்த வேண்டிய அவசியமில்லை என்ற கருத்து வெளிப்படுத்தப்படுகிறது - அதற்கு பதிலாக மிகவும் சிக்கலான மற்றும் செயல்பாட்டு நிறைந்த இடைமுகங்கள் பொருத்தமானவை.

  • தயாரிக்கப்பட்ட அறிக்கை
  • அழைக்கக்கூடிய அறிக்கை

மிகவும் நியாயமான கேள்வி எழுகிறது - இந்த இடைமுகங்கள் ஏன் தேவைப்படுகின்றன? அதை கண்டுபிடிக்கலாம்.

முதலில், PreparedStatement இடைமுகம் மற்றும் பிற JDBC அம்சங்களைப் பார்ப்போம் . நாம் பின்னர் CallableStatement இடைமுகத்திற்கு திரும்புவோம் - அதன் பயன்பாடு, முதலில், மிகவும் பொதுவானது அல்ல, இரண்டாவதாக, அதைப் பற்றி எல்லாவற்றையும் கருத்தில் கொண்ட பிறகு, உரையாடலை ஏற்கனவே மிகவும் குறுகியதாக மாற்றலாம்.

மேலும், SQL Injection எனப்படும் தரவுத்தள ஹேக்கிங்கிற்கான பிரபலமான அணுகுமுறையிலிருந்து PreparedStatement ஒரு சிறந்த உதவியாகும்.

ஆனால் இன்னும் சிறிது நேரம் கழித்து.

தயாரிக்கப்பட்ட அறிக்கை

PreparedStatement என்ற பெயரை நீங்கள் மொழிபெயர்க்க முயற்சித்தால் , "தயாரிக்கப்பட்ட அறிக்கை" போன்ற ஒன்றைப் பெறலாம். இங்கே மிக முக்கியமான சொல் "தயாரித்தது". "ஆயத்தம்" என்றால் என்ன?

இந்த சிக்கலைக் கருத்தில் கொள்வதற்கு முன், வசதியின் பார்வையில் இருந்து ஒரு முக்கியமான விஷயத்தைப் பார்க்க நான் முன்மொழிகிறேன், இது அடிக்கடி நிகழ்கிறது. எனவே, சில பயன்பாட்டில், தொடர்பு அட்டவணையில் தொடர்புத் தரவைச் செருக வேண்டும். இதைச் செய்ய, இது போன்ற ஒரு வினவலை நாம் தயார் செய்ய வேண்டும்:

INSERT INTO JC_CONTACT (FIRST_NAME, LAST_NAME, PHONE, EMAIL) VALUES (‘Harry’,'Potter','+79112345678','harry@example.com);

முதல் பார்வையில், எல்லாம் மிகவும் கடினம் மற்றும் பயமாக இல்லை என்று தெரிகிறது. முதல் பெயர், கடைசி பெயர், முகவரி மற்றும் தொலைபேசி எண்: அளவுருக்களிலிருந்து நமக்குத் தேவையான சரத்தை சேகரிக்கும் குறியீட்டை எழுத வேண்டும். எல்லா சரத் தரவும் ஒரு மேற்கோள் எழுத்தால் சூழப்பட்டிருக்க வேண்டும் என்பதை நீங்கள் நினைவில் கொள்ள வேண்டும்.

நாம் இதை ஒரு தனி செயல்பாட்டில் செய்தால், இது போன்ற ஒன்றைப் பெறுகிறோம்:

public String buildInsert(String firstName,, String lastName, String phone, String email) {
    String sql = "INSERT INTO JC_CONTACT (FIRST_NAME, LAST_NAME, PHONE, EMAIL)+VALUES ('" + firstName + "','" + lastName + "','" + phone + "','" + email + ")";
    return sql;
}

முதல் பெயர், கடைசி பெயர், தொலைபேசி எண் மற்றும் முகவரி ஆகியவற்றை படிவத்தில் உள்ள அளவுரு செயல்பாட்டிற்கு அனுப்புகிறோம், அவற்றிலிருந்து SQL வினவல் சரத்தை உருவாக்குகிறோம். மேற்கோள்கள் படத்தை கொஞ்சம் கெடுக்கும், ஆனால் இதுவரை அது பயமாக இல்லை.

சரி, எண்களைப் பற்றி என்ன? அவர்கள் மேற்கோள்களால் சூழப்பட ​​வேண்டிய அவசியமில்லை. ஓபாங்கி, ஒரு சந்தர்ப்பத்தில் மேற்கோள்கள் தேவை, மற்றொன்றில் தேவையில்லை. நிலைமை மேலும் சிக்கலாகி வருகிறது.

இப்போது மேலும் ஒரு சிக்கலைச் சேர்ப்போம் - சரத்திற்குள் ஒரு சாதாரண மேற்கோள் (மற்றும் ஒன்று கூட இல்லை) இருந்தால் என்ன செய்வது? நீங்கள் முதலில் அத்தகைய மேற்கோள்களைத் தேடி அவற்றைச் செயலாக்க வேண்டும். Mdaaa. எப்படியோ நாம் அசௌகரியமாக உணர ஆரம்பிக்கிறோம்.

நாங்கள் இப்போது தேதி செயலாக்கத்தைச் சேர்த்தால், பணி முற்றிலும் சலிப்பை ஏற்படுத்துகிறது - நீங்கள் ஒரு பெரிய அளவு வேலை செய்ய வேண்டும். தேதிகள் பொதுவாக விரும்பத்தகாதவை - வெவ்வேறு SQL சேவையகங்கள் தேதிகளுக்கான வெவ்வேறு வடிவங்களை ஏற்றுக்கொள்கின்றன.

எனவே நாம் என்ன பார்க்கிறோம்? வினவலின் உள்ளே அளவுருக்களைப் பயன்படுத்த வேண்டும் என்றால், வினவலை கைமுறையாக உருவாக்குவது மிகவும் விரும்பத்தகாததாகிவிடும். மற்றும் விரும்பத்தகாதது மட்டுமல்ல - நான் சலிப்பைக் கூட கூறுவேன். கருத்தில் கொள்ள ஏராளமான வழக்குகள் உள்ளன, இது மிகவும் சலிப்பான வேலை. அடிப்படையில், இது போன்ற சந்தர்ப்பங்களில் தான் PreparedStatement இடைமுகம் முன்மொழியப்பட்டது .

இந்த கோரிக்கை இரண்டு விஷயங்களைச் செய்ய உங்களை அனுமதிக்கிறது:

  • அளவுருக்கள் மாற்றப்படும் இடங்களைக் குறிக்கும் கோரிக்கையை முன்கூட்டியே தயார் செய்யவும்
  • ஒரு குறிப்பிட்ட வகையின் அளவுருக்களை அமைத்து, ஏற்கனவே அமைக்கப்பட்டுள்ள அளவுருக்களுடன் வினவலை இயக்கவும்

தயார்நிலை அறிக்கை எடுத்துக்காட்டு

அளவுருக்களை அமைப்பதற்கான எங்கள் விருப்பத்திற்கான தயார்நிலை அறிக்கையின் அமைப்பு இப்படி இருக்கும்:

// Example variables
String firstName = "Harry";
String lastName = "Potter";
String phone = "+12871112233";
String email = "harry@example.com";

// Request with indication of places for parameters in the form of "?"
String sql = "INSERT INTO JC_CONTACT (FIRST_NAME, LAST_NAME, PHONE, EMAIL) VALUES (?, ?, ?, ?)";

// Create a request. The con variable is an object of type Connection
PreparedStatement stmt = con.prepareStatement(sql);

// Set parameters
stmt.setString(1, firstName);
stmt.setString(2, lastName);
stmt.setString(3, phone);
stmt.setString(4, email);

// Execute the request
stmt.executeUpdate();

நீங்கள் பார்க்க முடியும் என, எல்லாம் மிகவும் எளிது.

முதலாவதாக, ஒரு SQL வினவலை எழுதும் போது, ​​​​அளவுருக்களை மாற்ற வேண்டிய இடங்கள் கேள்விக்குறிகளுடன் எழுதப்படுகின்றன - "?".

இரண்டாவதாக, con.prepareStatement() ஐ அழைப்பதன் மூலம் கோரிக்கை உருவாக்கப்பட்டது .

மூன்றாவதாக, அளவுருக்களின் அமைப்பு எண் மற்றும் மதிப்பின் குறிப்பால் செல்கிறது. வரிசைகள் மற்றும் சேகரிப்புகளுடன் பணிபுரியும் போது, ​​​​அளவுருக்களின் எண்ணிக்கை 0 இலிருந்து அல்ல, 1 இலிருந்து தொடங்குகிறது என்பதை நினைவில் கொள்க.

PreparedStatement இடைமுகத்தில் சரங்களை அமைப்பதற்கான முறைகள் உள்ளன - setString() , எண்களை அமைப்பதற்கான - setInt() , setLong() , setDouble() , தேதிகளை அமைப்பதற்கான - setDate() . மேலும் சிக்கலான வகைகள் - இதை ஆவணத்தில் காணலாம்.

நான்காவதாக, stmt.executeUpdate() க்கான அழைப்பு வினவல் சரத்தைக் குறிப்பிடாமல் ஏற்கனவே செயல்படுத்தப்பட்டுள்ளது.

PreparedStatement உடன் நண்பர்களை உருவாக்க நான் கடுமையாக பரிந்துரைக்கிறேன் - இது மிகவும் பயனுள்ள கருவியாகும்.

கருத்துக்கள்
  • பிரபலமானவை
  • புதியவை
  • பழையவை
ஒரு கருத்தைத் தெரிவிக்க நீங்கள் உள்நுழைந்திருக்க வேண்டும்
இந்தப் பக்கத்தில் இதுவரை எந்தக் கருத்தும் வழங்கப்படவில்லை