এক্সিকিউটিস্ক্যালার, এক্সিকিউটআরডিডার এবং এক্সিকিউটননকিউয়ের মধ্যে পার্থক্য কী?


106

এই তিনটি ব্যবহার করার সময় বিভিন্ন ক্ষেত্রে কী কী? আমার কোথায় ব্যবহার করা উচিত এবং কোথায় আমার ব্যবহার করা উচিত নয়?


উত্তর:


190
  • ExecuteScalarসাধারণত যখন আপনার ক্যোয়ারী একক মান ফেরত দেয় তখন ব্যবহৃত হয়। যদি এটি আরও বেশি দেয়, তবে ফলাফলটি প্রথম সারির প্রথম কলাম। একটি উদাহরণ হতে পারে SELECT @@IDENTITY AS 'Identity'
  • ExecuteReaderএকাধিক সারি / কলাম (যেমন, SELECT col1, col2 from sometable) সহ যে কোনও ফলাফলের জন্য সেট ব্যবহৃত হয় ।
  • ExecuteNonQuery সাধারণত ফলাফল ছাড়াই এসকিউএল স্টেটমেন্টের জন্য ব্যবহৃত হয় (উদাঃ, আপডেট, ইনসার্ট, ইত্যাদি)।

39
ExecuteNonQueryপ্রভাবিত সারি সংখ্যা ফিরে আসতে পারে।
সংগ্রাম নন্দখিলে

আমি ভেবেছিলাম যখন সঞ্চিত প্রক্রিয়াগুলি কল করতে হবে যেগুলি সারণীর সংকলন ফেরত দেবে তখন এক্সিকিউটননকুইয়ারি ব্যবহার করা হয়।
গোগুটজ

আপনার যদি সঞ্চিত পদ্ধতিতে রিটার্নের স্টেটমেন্ট থাকে তবে এক্সিকিউটননকুইয়ারিও কাজ করে। stackoverflow.com/questions/6210027/...
FrenkyB

40

ExecuteNonQuery ():

  1. কেবলমাত্র অ্যাকশন ক্যোয়ারী (কাজ করুন, পরিবর্তন করুন, ড্রপ, sertোকান, আপডেট করুন, মুছুন) দিয়ে কাজ করবে।
  2. ক্যোয়ারিতে প্রভাবিত সারির সংখ্যা গণনা করে s
  3. রিটার্ন টাইপ হয়
  4. রিটার্ন মান alচ্ছিক এবং পূর্ণসংখ্যের ভেরিয়েবলের জন্য বরাদ্দ করা যেতে পারে।

ExecuteReader ():

  1. অ্যাকশন এবং অ-অ্যাকশন প্রশ্নের সাথে কাজ করবে (নির্বাচন করুন)
  2. ক্যোয়ারী দ্বারা নির্বাচিত সারিগুলির সংগ্রহ প্রদান করে।
  3. রিটার্ন টাইপ হ'ল ডেটা রিডার।
  4. রিটার্ন মান বাধ্যতামূলক এবং কোনও অন্য অবজেক্ট ডেটাআডারকে বরাদ্দ করা উচিত।

ExecuteScalar ():

  1. অ-অ্যাকশন ক্যোয়ারীগুলির সাথে কাজ করবে যেখানে সামগ্রিক কার্যাদি রয়েছে contain
  2. ক্যোয়ারির ফলাফলের প্রথম সারি এবং প্রথম কলাম মানটি ফিরিয়ে দিন।
  3. রিটার্ন টাইপ অবজেক্ট।
  4. রিটার্ন মান বাধ্যতামূলক এবং প্রয়োজনীয় ধরণের একটি পরিবর্তনশীলকে নির্ধারিত করা উচিত।

রেফারেন্স ইউআরএল:

http://nareshkamuni.blogspot.in/2012/05/what-is-difference-between.html


38

প্রতিটি এক ভিন্ন ধরণের কার্যকর করা।

  • এক্সিকিউটসকালার ক্যোয়ারির ধরণ হতে চলেছে যা একক মান প্রদান করবে।

    একটি উদাহরণ সন্নিবেশ করার পরে একটি উত্পন্ন আইডি ফিরে আসবে।

    INSERT INTO my_profile (Address) VALUES ('123 Fake St.'); SELECT CAST(scope_identity() AS int)

  • এক্সিকিউটআরডার আপনাকে একটি ডেটা রিডার প্রদান করে যা আপনাকে একবারে ফলাফলগুলির সমস্ত কলাম পড়তে দেয়।

    এক বা একাধিক ব্যবহারকারীর জন্য প্রোফাইল তথ্য টানতে একটি উদাহরণ হবে।

    SELECT * FROM my_profile WHERE id = '123456'

  • এক্সিকিউটননকুইয়ারি এমন কোনও এসকিউএল যা মানগুলি ফিরিয়ে দেয় না, তবে বাস্তবে কোনও কিছু মুছে ফেলা বা সংশোধন করার মতো কিছু কাজ সম্পাদন করে।

    উদাহরণস্বরূপ ডাটাবেসে কোনও ব্যবহারকারীর প্রোফাইল আপডেট করা হবে।

    UPDATE my_profile SET Address = '123 Fake St.' WHERE id = '123456'


1
দেখে মনে হচ্ছে আপনি এক্সিকিউটিআরসিডার ব্যবহার করে এক্সিকিউটসকালার এবং এক্সিকিউটননকুইয়ারি উভয়ই কাজটি করতে পারেন, তবে অন্য দুটি কেন ব্যবহার করবেন? কোন কর্মক্ষমতা লাভ?
ব্যবহারকারী 20358

এক্সিকিউটরিডারকে অতিরিক্ত ব্যবহার এড়াতে যাওয়ার একটি কারণ হ'ল এটি পাঠককে আপনার কাজ শেষ না করা অবধি রাখে। এই সমস্তগুলির সাথে আপনি কীভাবে সেগুলি কার্যকরভাবে কার্যকরভাবে ব্যবহার করতে পারেন সে সম্পর্কে কিছু নির্দিষ্ট তথ্য জানতে চান। আমি এখানে যা উল্লেখ করেছি তা হ'ল কিছু ভাল গাইডলাইন।
ব্রেন্ডন এনরিক

9

দস্তাবেজগুলি থেকে (দ্রষ্টব্য: এমএসডিএন হ'ল একটি কার্যকর সংস্থান যখন আপনি জানতে চান যে জিনিসগুলি কী করে!):

ExecuteScalar

একটি ডাটাবেস থেকে একক মান (উদাহরণস্বরূপ, একটি সামগ্রিক মান) পুনরুদ্ধার করতে এক্সিকিউটিস্কেলার পদ্ধতিটি ব্যবহার করুন। এটি এক্সিকিউটরিডার পদ্ধতি ব্যবহার করার চেয়ে কম কোডের প্রয়োজন, এবং তারপরে স্কালডিটাআরডার দ্বারা ফিরিয়ে নেওয়া ডেটা ব্যবহার করে আপনাকে যে একক মান তৈরি করতে হবে সেই ক্রিয়াকলাপগুলি সম্পাদন করতে হবে।

ExecuteReader

কমান্ডটেক্সটকে সংযোগে প্রেরণ করে এবং স্কেলডাটাআরডিডার তৈরি করে।

... এবং স্কেলডাটাডার থেকে ...

এসকিউএল সার্ভার ডাটাবেস থেকে সারিগুলির কেবলমাত্র ফরওয়ার্ড স্ট্রিম পড়ার একটি উপায় সরবরাহ করে। এই শ্রেণিটি উত্তরাধিকারসূত্রে প্রাপ্ত হতে পারে না।

ExecuteNonQuery

আপনি ক্যাটালগ ক্রিয়াকলাপ সম্পাদনের জন্য এক্সিকিউটননকিউয়ারি ব্যবহার করতে পারেন (উদাহরণস্বরূপ, একটি ডাটাবেসের কাঠামোটি অনুসন্ধান করা বা টেবিলের মতো ডাটাবেস অবজেক্ট তৈরি করা), অথবা আপডেটসেট, ইনসার্ট, বা বিবরণী বিলোপ করে ডেটাসেট ব্যবহার না করে ডাটাবেসে ডেটা পরিবর্তন করতে।


8

অন্যরা যা পোস্ট করেছে তাতে যুক্ত করতে:

এক্সিকিউটিস্কেলার ধারণা অনুসারে ফলাফলসেটের প্রথম সারিতে বামতম কলামটি ধারণ করে; আপনি কর্মীদের কাছ থেকে একটি নির্বাচন করুন * কার্যকর করতে পারেন, তবে আপনি কেবল ফলাফল সারিগুলির প্রথম কক্ষটি পেতে পারেন সাধারণত কোনও একক মান প্রত্যাবর্তনের প্রশ্নের জন্য ব্যবহৃত হয়। আমি 100% নিশ্চিত SQLServer সম্পর্কে নই কিন্তু ওরাকল, আপনি wouldnt একটি ফাংশন (একটি ডাটাবেস কোডটি আয় একটি একক মান) চালানোর জন্য এটি ব্যবহার এবং এটি আপনার ফাংশন যদিও ফাংশন একক মান আসতে ফেরত মান দিতে আশা। যাইহোক, যদি আপনি কোনও প্রশ্নের অংশ হিসাবে ফাংশনটি চালাচ্ছেন, যেমন ডুয়াল থেকে নির্বাচন করুন ('এবিসি', 1, 1) তবে এটি রিটার্নের মানটি এই সত্যের ভিত্তিতে প্রদান করবে যে রিটার্নের মান উপরের বামদিকের মধ্যে সঞ্চিত রয়েছে ফলস্বরূপ রোসেটের ঘর

এক্সিকিউটনিউকোয়্যারি ডাটাবেস স্টোরেজ পদ্ধতি, ফাংশন এবং ডেটা সংশোধনকারী ক্যোয়ারীগুলি (ইনসার্ট / আপডেট / ডিলিট) বা ডেটাবেস কাঠামো সংশোধন (টেবিল তৈরি করুন ...) চালানোর জন্য ব্যবহৃত হবে। সাধারণত কলের রিটার্নের মানটি কতটি সারি অপারেশন দ্বারা প্রভাবিত হয়েছিল তার একটি ইঙ্গিত তবে এটির গ্যারান্টি রাখতে ডিবি ডকুমেন্টেশন চেক করুন


4

ExecuteReader() একটি এসকিউএল কোয়েরি কার্যকর করে যা ডেটা সরবরাহকারী DBDataReader অবজেক্টটি প্রদান করে যা কেবলমাত্র ফরোয়ার্ড সরবরাহ করে এবং কোয়েরির ফলাফলের জন্য কেবল অ্যাক্সেস পড়বে।

ExecuteScalar()অনুরূপ ExecuteReader()পদ্ধতি যে এই ধরনের একটি রেকর্ড গণনা প্রাপ্তির হিসাবে Singleton জিজ্ঞাসার জন্য ডিজাইন করা হয়েছে।

ExecuteNonQuery() নন-কোয়েরি কার্যকর করুন যা তৈরি করতে, মুছে ফেলতে, আপডেট করতে, সন্নিবেশ করতে কাজ করে)


3

ExecuteNonQuery

এই এক্সিকিউটিভনকিউয়ের পদ্ধতিটি কেবল সন্নিবেশ, আপডেট এবং মুছা, তৈরি এবং SET বিবৃতিতে ব্যবহৃত হবে। এক্সিকিউটননকুইয়ারি পদ্ধতি INSERT, মোছা বা আপডেটের ক্রিয়াকলাপ দ্বারা প্রভাবিত সারিগুলির সংখ্যা ফিরিয়ে দেবে।

ExecuteScalar

ডাটাবেস থেকে একক মান পুনরুদ্ধার করা খুব দ্রুত। এক্সিকিউট স্কেলার এসকিউএল কোয়েরি বা কমান্ড অবজেক্ট ব্যবহার করে সঞ্চিত পদ্ধতি কার্যকর করার সময় একক সারিতে একক কলাম মান অর্থাৎ একক মান প্রদান করবে। ExecuteReader

এক্সিকিউট রিডার এসকিউএল কোয়েরি কার্যকর করার সময় বা কমান্ড অবজেক্ট ব্যবহার করে সঞ্চিত পদ্ধতি প্রয়োগ করে সারিগুলির সেটটি ফেরত দিতে ব্যবহৃত হবে। এটি একমাত্র রেকর্ড পুনরুদ্ধারের জন্য এগিয়ে এবং এটি প্রথম থেকে শেষ পর্যন্ত টেবিলের মানগুলি পড়তে ব্যবহৃত হয়।


3

এক্সিকিউটননকুইয়ারি পদ্ধতি INSERT, মোছা বা আপডেটের ক্রিয়াকলাপ দ্বারা প্রভাবিত সারিগুলির সংখ্যা ফিরিয়ে দেবে। এই এক্সিকিউটিভনকিউয়ের পদ্ধতিটি কেবল সন্নিবেশ, আপডেট এবং মুছা, তৈরি এবং SET বিবৃতিতে ব্যবহৃত হবে। (আরও পড়ুন)

এক্সিকিউটিস্কেলার এসকিউএল কোয়েরি বা কমান্ড অবজেক্ট ব্যবহার করে সঞ্চিত পদ্ধতি কার্যকর করার সময় একক সারির একক কলাম মান অর্থাৎ একক মান প্রদান করবে। ডাটাবেস থেকে একক মান পুনরুদ্ধার করা খুব দ্রুত। (আরও পড়ুন)

এক্সকিউটআরডারটি এসকিউএল কোয়েরি বা স্টোরড পদ্ধতি ব্যবহার করে কমান্ড অবজেক্ট ব্যবহার করে সারিগুলির সেটটি ফেরত দিতে ব্যবহৃত হবে। এটি একমাত্র রেকর্ড পুনরুদ্ধারের জন্য এগিয়ে এবং এটি প্রথম থেকে শেষ পর্যন্ত টেবিলের মানগুলি পড়তে ব্যবহৃত হয়। (আরও পড়ুন)


1

এক্সিকিউটনকুইকিরি: সাধারণত যখন ব্যবহৃত হয় স্ক্রোল স্টেটমেন্ট থেকে সন্নিবেশ, আপডেট, অপারেশন মোছার মতো কিছু না পাওয়া যায় তখন ব্যবহৃত হয়।

cmd.ExcecuteNonQuery();

ExecuteScalar:

এটি যখন ব্যবহৃত হবে যখন এসকিএল ক্যোয়ারী একক মান প্রদান করে।

Int b = cmd.ExcecuteScalar();

ExecuteReader

এটি যখন ব্যবহৃত হবে যখন এসকিএল কোয়েরি বা সঞ্চিত পদ্ধতিটি একাধিক সারি / কলামগুলি ফেরত দেয়

SqlDataReader dr = cmd.ExecuteReader();

আরও তথ্যের জন্য আপনি এখানে ক্লিক করতে পারেন http://www.dotnetqueries.com/Article/148/-difference-between-executescalar-executereader-executenonquery

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.