আপনার প্যারামিটার ঘোষণায় আপনি ভারচার (ম্যাক্স) জন্য কোন আকার ব্যবহার করেন?


190

ADO.NET এ প্যারামিটার তৈরি করার সময় আমি সাধারণত আমার কলামের আকার সেট করি

তবে কলামটি হলে আমি কোন আকারটি ব্যবহার করব VARCHAR(MAX)?

cmd.Parameters.Add("@blah", SqlDbType.VarChar, ?????).Value = blah;

উত্তর:


288

এই ক্ষেত্রে আপনি -1 ব্যবহার করুন।


5
সমস্ত প্যারামিটার দৈর্ঘ্য -1 এ সেট করার কোনও কার্যকারিতা রয়েছে কি না, তাই আমাকে ডিবি-ম্যাচিং তালিকা বজায় রাখতে হবে না?
অ্যান্ড্রু বুলক

1
8000 বাইটের চেয়ে কম মানগুলির জন্য বর্ণচর (সর্বাধিক) একইভাবে ভার্চর (8000) হিসাবে বিবেচিত হয় treated বৃহত্তর মানগুলির জন্য ক্ষেত্রটিকে "পাঠ্য" ক্ষেত্র হিসাবে বিবেচনা করা হয় (ওরফে একটি "সিএলওবি")। এটি অনুসন্ধানের পরিকল্পনার অপ্টিমাইজেশন এবং এই কলামে বৃহত্তর মানগুলির সাথে সারিগুলি পুনরুদ্ধারের দক্ষতাগুলিকে প্রভাবিত করতে পারে, কারণ অতিরিক্ত সন্ধানের জন্য প্রয়োজনীয় "আউট-সারি" ডেটা সংরক্ষণ করা হয়।
কিথস

স্কয়ারে এনভারচর (সর্বাধিক) ব্যবহার করুন এবং স্কেলডিবিটাইপ-এর সাথে দৈর্ঘ্য -১ সংজ্ঞায়িত করুন। এন ভারচার সি # তে
রোমিল কুমার জৈন

যদি এটি নীচে স্যাম মেশিশার উত্তরটির জন্য না হয় - আমি আপনার উত্তরটি মিস করতাম। আপনি যদি কোড হিসাবে ফর্ম্যাট কোডের একটি নমুনা লাইন রাখেন তবে আপনার উত্তর আরও বেশি ভোট পেতে পারে।
Qxotk

51

আমরা যারা মিশেল চ্যানিউইস্কি দ্বারা কোড -1 এর সম্পূর্ণ লাইন -1 দেখতে পাইনি তাদের জন্য:

cmd.Parameters.Add("@blah",SqlDbType.VarChar,-1).Value = "some large text";

2

সর্বাধিক SQLlDbType.VarChar আকার 2147483647।

আপনি যদি স্কয়ারের পরিবর্তে জেনেরিক ওলেডব সংযোগ ব্যবহার করেন তবে আমি এখানে পেয়েছি যে একটি লংভারচর ডেটাটাইপও রয়েছে। এর সর্বোচ্চ আকার 2147483647 64

cmd.Parameters.Add("@blah", OleDbType.LongVarChar, -1).Value = "very big string";

1

আপনাকে আকারের প্যারামিটারটি পাস করার দরকার নেই, কেবল ঘোষণা করুন Varcharযে এটি ইতিমধ্যে ম্যাক্স:

cmd.Parameters.Add("@blah",SqlDbType.VarChar).Value = "some large text";

1
এক্সিকিউশন প্ল্যান কীভাবে গণনা করা হয় তার কারণে এটি আপনার এসকিউএল সার্ভারে নেতিবাচক প্রভাব ফেলতে পারে।
ইয়াকভ

আমি আউটপুট প্যারামিটার ব্যবহার করার সময় এটির মতো না হওয়ার বিষয়টি খুঁজে পেয়েছি। এটা তোলে নিম্নলিখিত ত্রুটির `ব্যতিক্রম ঘটাতে: স্ট্রিং [2]: সাইজ সম্পত্তি 0.` একটি অবৈধ আকার এই সমস্যার সমাধান করতে, ব্যবহার সাইজ = -1 দেখতে হয়েছে stackoverflow.com/questions/21087950/...
মাইকেল কে

1

আপনি যদি এরকম কিছু করেন:

    cmd.Parameters.Add("@blah",SqlDbType.VarChar).Value = "some large text";

আকার "কিছু বড় পাঠ্য" থেকে নেওয়া হবে। দৈর্ঘ্য

এটি কোনও সমস্যা হতে পারে যখন এটি কোনও আউটপুট প্যারামিটার হয়, আপনি আর কোনও অক্ষর ফিরে পাবেন না তারপরে আপনি ইনপুট হিসাবে রাখবেন।

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