ResultSet தனிப்பயனாக்கம்

நவீன ஜேடிபிசி ஏபிஐ நீங்கள் பொருட்களை தனிப்பயனாக்க அனுமதிக்கிறது.அறிக்கைமற்றும்முடிவு தொகுப்பு. உதாரணமாக, பயன்படுத்திமுடிவு தொகுப்புநீங்கள் தரவுத்தளத்தில் வரிசைகளை மாற்றலாம்.

ஒரு அறிக்கைப் பொருளை உருவாக்கும்போது, ​​அதில் நமது விருப்பங்களின் ஒரு கொத்தை அனுப்பலாம். இந்த விருப்பங்களை மூன்று குழுக்களாகப் பிரிக்கலாம்:

  • அடிப்படை இணைப்பு வகை
  • ஒரே நேரத்தில் அணுகல் கட்டுப்பாடு
  • நிலைத்தன்மை மற்றும் பரிவர்த்தனைகள்

ஒரு பொருளை உருவாக்கும் போது இந்த அளவுருக்கள் அனுப்பப்படலாம்அறிக்கைஅல்லதுதயாரிக்கப்பட்ட அறிக்கை. உதாரணமாக:

Statement statement = connection.createStatement(
    ResultSet.TYPE_FORWARD_ONLY,
    ResultSet.CONCUR_READ_ONLY,
    ResultSet.CLOSE_CURSORS_OVER_COMMIT );

PreparedStatement statement = connection.prepareStatement(sql,
    ResultSet.TYPE_FORWARD_ONLY,
    ResultSet.CONCUR_READ_ONLY,
    ResultSet.CLOSE_CURSORS_OVER_COMMIT);

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

ரிசல்ட் செட் வகைகள்

ResultSet ஒரு குறிப்பிட்ட வகையாக இருக்கலாம். ரிசல்ட்செட்டின் சில பண்புகள் மற்றும் திறன்களை வகை வரையறுக்கிறது.

அனைத்து தரவுத்தளங்கள் மற்றும் JDBC இயக்கிகளால் அனைத்து வகைகளும் ஆதரிக்கப்படவில்லை. நீங்கள் பயன்படுத்த விரும்பும் வகையை ஆதரிக்கிறதா என்பதைப் பார்க்க, உங்கள் தரவுத்தளத்தையும் JDBC இயக்கியையும் சரிபார்க்க வேண்டும். கொடுக்கப்பட்ட வகை ஆதரிக்கப்படுகிறதா இல்லையா என்பதைப் பொறுத்து DatabaseMetaData.supportsResultSetType(int வகை) முறை சரி அல்லது தவறு என்பதை வழங்குகிறது .

எழுதும் நேரத்தில், ரிசல்ட் செட்டில் மூன்று வகைகள் உள்ளன:

  • முடிவுத் தொகுப்பு.TYPE_FORWARD_ONLY
  • முடிவுத்தொகுப்பு.TYPE_SCROLL_INSENSITIVE
  • முடிவுத்தொகுப்பு.TYPE_SCROLL_SENSITIVE

இயல்பு வகை TYPE_FORWARD_ONLY.

TYPE_FORWARD_ONLY என்பது முடிவுத் தொகுப்பை முன்னோக்கி மட்டுமே நகர்த்த முடியும். அதாவது, நீங்கள் வரிசை 1, வரிசை 2, வரிசை 3 போன்றவற்றிலிருந்து மட்டுமே நகர முடியும். ரிசல்ட் செட்டில், நீங்கள் பின்னோக்கி நகர முடியாது: பத்தாவது படித்த பிறகு 9 வது வரிசையில் இருந்து தரவைப் படிக்க முடியாது.

TYPE_SCROLL_INSENSITIVE என்பது ரிசல்ட்செட்டை முன்னோக்கியோ அல்லது பின்னோக்கியோ நகர்த்தலாம். நீங்கள் தற்போதைய நிலைக்கு தொடர்புடைய நிலைக்கு செல்லலாம் அல்லது முழுமையான நிலைக்கு செல்லலாம்.

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

TYPE_SCROLL_SENSITIVE என்பது ரிசல்ட்செட்டை முன்னோக்கியோ அல்லது பின்னோக்கியோ நகர்த்தலாம். நீங்கள் தற்போதைய நிலைக்கு தொடர்புடைய நிலைக்கு செல்லலாம் அல்லது முழுமையான நிலைக்கு செல்லலாம்.

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

ஒத்திசைவு

ResultSetஐப் புதுப்பிக்க முடியுமா அல்லது படிக்க மட்டுமே முடியுமா என்பதை ResultSet இன் ஒத்திசைவு தீர்மானிக்கிறது.

சில தரவுத்தளங்கள் மற்றும் JDBC இயக்கிகள் ResultSet ஐ மேம்படுத்துவதை ஆதரிக்கின்றன, ஆனால் அனைத்தும் இல்லை. DatabaseMetaData.supportsResultSetConcurrency(int concurrency) முறையானது, கொடுக்கப்பட்ட ஒத்திசைவு பயன்முறை ஆதரிக்கப்படுகிறதா இல்லையா என்பதைப் பொறுத்து சரி அல்லது தவறு என்பதை வழங்குகிறது .

ResultSet இரண்டு நிலைகளில் ஒன்றைக் கொண்டிருக்கும்.

  • ResultSet.CONCUR_READ_ONLY
  • ResultSet.CONCUR_UPDATABLE

CONCUR_READ_ONLY என்றால் முடிவுத்தொகுப்பை மட்டுமே படிக்க முடியும்.

CONCUR_UPDATABLE என்பது முடிவுத் தொகுப்பைப் படித்து மாற்றியமைக்க முடியும்.

தரவுத்தளத்தில் தரவை மாற்றுவதற்கான எடுத்துக்காட்டு

இந்த அளவுருக்கள் மூலம், நீங்கள் உருவாக்கப்பட்ட அறிக்கையையும் அதன் முடிவுகளையும் கட்டுப்படுத்தலாம்.

எடுத்துக்காட்டாக, நீங்கள் புதுப்பிக்கக்கூடிய ResultSet ஐ உருவாக்கலாம் மற்றும் தரவுத்தளத்தை மாற்ற அதைப் பயன்படுத்தலாம். அறிக்கையை உருவாக்கும் போது, ​​​​பின்வரும் நிபந்தனைகளை கவனிக்க வேண்டியது அவசியம்:

  • ஒரு அட்டவணை மட்டுமே குறிப்பிடப்பட்டுள்ளது
  • உட்பிரிவுகளின்படி சேருதல் அல்லது குழுவைக் கொண்டிருக்கவில்லை
  • வினவல் நெடுவரிசைகளில் முதன்மை விசை இருக்க வேண்டும்

மேலே உள்ள நிபந்தனைகள் பூர்த்தி செய்யப்பட்டால், தரவுத்தளத்தில் ஒரு அட்டவணையைப் புதுப்பிக்க புதுப்பிக்கப்பட்ட ResultSet ஐப் பயன்படுத்தலாம். அறிக்கைப் பொருளை உருவாக்கும் போது, ​​பின்வரும் அளவுருக்களைக் குறிப்பிட வேண்டும்:

Statement st = createStatement(Result.TYPE_SCROLL_INSENSITIVE, Result.CONCUR_UPDATABLE)

அத்தகைய அறிக்கையை செயல்படுத்துவதன் விளைவு புதுப்பிக்கத்தக்க முடிவு தொகுப்பாகும். புதுப்பிப்பு முறை ResultSet கர்சரை நீங்கள் புதுப்பிக்க விரும்பும் வரிசைக்கு நகர்த்தி, பின்னர் updateXXX() முறையை அழைக்கவும் .

updateXXX முறை getXXX() முறையைப் போலவே செயல்படுகிறது . மேம்படுத்தல்XXX() முறை இரண்டு அளவுருக்கள் கொண்டது. முதலாவது, புதுப்பிக்கப்படும் நெடுவரிசையின் எண்ணிக்கை, இது நெடுவரிசையின் பெயராகவோ அல்லது வரிசை எண்ணாகவோ இருக்கலாம். இரண்டாவது புதுப்பிக்கப்பட வேண்டிய தரவு, இந்த தரவு வகை XXXஐப் போலவே இருக்க வேண்டும்.

தரவுத்தளத்தில் உள்ள வரிசையை உண்மையில் புதுப்பிக்க, ResultSet கர்சர் மாற்றப்பட்ட வரிசையை விட்டு வெளியேறும் முன் நீங்கள் updateRow() முறையை அழைக்க வேண்டும் , இல்லையெனில் மாற்றங்கள் தரவுத்தளத்தில் வராது.

அட்டவணையில் புதிய வரிசைகளையும் சேர்க்கலாம்:

முதலில் நீங்கள் கர்சரை வெற்று வரிக்கு நகர்த்த வேண்டும். இதைச் செய்ய, moveToInsertRow() முறையை அழைக்கவும் .

இந்த வரிசையை updateXXX() முறையைப் பயன்படுத்தி தரவுடன் நிரப்ப வேண்டும் .

வரிசையை அடித்தளத்தில் சேர்க்க நீங்கள் inseterRow() முறையை அழைக்க வேண்டும் .

இறுதியாக, நீங்கள் moveToCurrentRow() முறையை அழைப்பதன் மூலம் கர்சரை திரும்பப் பெற வேண்டும் .

முக்கியமான! அனைத்து DBMSகளும் நீட்டிக்கப்பட்ட அறிக்கைக்கான இந்த விருப்பங்களை ஆதரிக்கவில்லை. சிக்கல்கள் ஏற்பட்டால், குறிப்பிட்ட DBMS இன் அதிகாரப்பூர்வ ஆவணத்தைப் பார்க்கவும்.