স্কেলকম্যান্ডে অ্যারে প্যারামিটারটি পাস করুন


144

আমি নীচের মত সি # তে এসকিউএল কমেন্ডে অ্যারে প্যারামিটারটি দেওয়ার চেষ্টা করছি, তবে এটি কার্যকর হয় না। কেউ কি এর আগে দেখা করে?

string sqlCommand = "SELECT * from TableA WHERE Age IN (@Age)";
SqlConnection sqlCon = new SqlConnection(connectString);
SqlCommand sqlComm = new SqlCommand();
sqlComm.Connection = sqlCon;
sqlComm.CommandType = System.Data.CommandType.Text;
sqlComm.CommandText = sqlCommand;
sqlComm.CommandTimeout = 300;
sqlComm.Parameters.Add("@Age", SqlDbType.NVarChar);
StringBuilder sb = new StringBuilder();
foreach (ListItem item in ddlAge.Items)
{
     if (item.Selected)
     {
         sb.Append(item.Text + ",");
     }
}

sqlComm.Parameters["@Age"].Value = sb.ToString().TrimEnd(',');

11
বিষয়টি আসলেই নয়, তবে আমার কাছে মনে হয় টেবিলের কলাম হিসাবে বয়স হওয়া একটি খারাপ ধারণা, কারণ এটি ক্রমাগত আপডেট করা প্রয়োজন। মানুষ বুড়ো হয়ে যায় তাই না? এর পরিবর্তে আপনার কলামটি ডেটঅফবर्थের কথা বিবেচনা করা উচিত?
কেজিল ওয়াটনেডাল

এখানে উত্তরের উত্তরের সাথে প্রশ্ন: স্ট্যাকওভারফ্লো.com
অ্যাডাম বাটলার

উত্তর:


168

আপনাকে একবারে অ্যারেতে মানগুলি যুক্ত করতে হবে।

var parameters = new string[items.Length];
var cmd = new SqlCommand();
for (int i = 0; i < items.Length; i++)
{
    parameters[i] = string.Format("@Age{0}", i);
    cmd.Parameters.AddWithValue(parameters[i], items[i]);
}

cmd.CommandText = string.Format("SELECT * from TableA WHERE Age IN ({0})", string.Join(", ", parameters));
cmd.Connection = new SqlConnection(connStr);

আপডেট: এখানে একটি বর্ধিত এবং পুনরায় ব্যবহারযোগ্য সমাধান যা তার প্রস্তাবিত সম্পাদনার পাশাপাশি অ্যাডামের উত্তর ব্যবহার করে। আমি এটিকে কিছুটা উন্নত করেছি এবং এটিকে কল করা আরও সহজ করার জন্য এটি একটি এক্সটেনশন পদ্ধতিতে তৈরি করেছি।

public static class SqlCommandExt
{

    /// <summary>
    /// This will add an array of parameters to a SqlCommand. This is used for an IN statement.
    /// Use the returned value for the IN part of your SQL call. (i.e. SELECT * FROM table WHERE field IN ({paramNameRoot}))
    /// </summary>
    /// <param name="cmd">The SqlCommand object to add parameters to.</param>
    /// <param name="paramNameRoot">What the parameter should be named followed by a unique value for each value. This value surrounded by {} in the CommandText will be replaced.</param>
    /// <param name="values">The array of strings that need to be added as parameters.</param>
    /// <param name="dbType">One of the System.Data.SqlDbType values. If null, determines type based on T.</param>
    /// <param name="size">The maximum size, in bytes, of the data within the column. The default value is inferred from the parameter value.</param>
    public static SqlParameter[] AddArrayParameters<T>(this SqlCommand cmd, string paramNameRoot, IEnumerable<T> values, SqlDbType? dbType = null, int? size = null)
    {
        /* An array cannot be simply added as a parameter to a SqlCommand so we need to loop through things and add it manually. 
         * Each item in the array will end up being it's own SqlParameter so the return value for this must be used as part of the
         * IN statement in the CommandText.
         */
        var parameters = new List<SqlParameter>();
        var parameterNames = new List<string>();
        var paramNbr = 1;
        foreach (var value in values)
        {
            var paramName = string.Format("@{0}{1}", paramNameRoot, paramNbr++);
            parameterNames.Add(paramName);
            SqlParameter p = new SqlParameter(paramName, value);
            if (dbType.HasValue)
                p.SqlDbType = dbType.Value;
            if (size.HasValue)
                p.Size = size.Value;
            cmd.Parameters.Add(p);
            parameters.Add(p);
        }

        cmd.CommandText = cmd.CommandText.Replace("{" + paramNameRoot + "}", string.Join(",", parameterNames));

        return parameters.ToArray();
    }

}

এটিকে এভাবে বলা হয় ...

var cmd = new SqlCommand("SELECT * FROM TableA WHERE Age IN ({Age})");
cmd.AddArrayParameters("Age", new int[] { 1, 2, 3 });

লক্ষ করুন যে বর্গাকার স্টেটমেন্টের "{বয়স}" প্যারামিটার নামের সাথে আমরা অ্যাডআরাইপ্যারামিটারগুলিতে প্রেরণ করছি the অ্যাডআরএপ্যারামিটারগুলি সঠিক পরামিতিগুলির সাথে মানটি প্রতিস্থাপন করবে।


11
এই পদ্ধতিতে কি স্কিল ইঞ্জেকশনটির মতো সুরক্ষা সমস্যা রয়েছে?
ইওংওয়ে জিং

7
যেহেতু আপনি মানগুলিকে পরামিতিগুলিতে স্থাপন করছেন সেখানে স্কুয়েল ইঞ্জেকশন হওয়ার কোনও ঝুঁকি নেই।
ব্রায়ান

এটি আমি যা খুঁজছিলাম কিন্তু আমার একটি প্রশ্ন ছিল। যদি ওপিতে এসকিউএল যুক্ত করতে একই কলামগুলির বেশ কয়েকটি থাকে তবে আমরা কীভাবে এটি করব? উদাহরণ। টেবিল থেকে যেখানে বয়স = ({0 OR) বা বয়স = ({1 Table) নির্বাচন করুন। (আমরা এটি কীভাবে সেমিডি.প্যারামিটার দিয়ে করব)
কোকো দেব

1
@ টি 2 টম, ওফস আমি এটা ঠিক করেছি. ধন্যবাদ।
ব্রায়ান

1
আমি এটি পছন্দ করি এবং কেবল স্থানধারক স্ট্রিংটিকে একটি ভেরিয়েবলের সাথে বের করার পরে নিম্নলিখিত পরিবর্তনগুলি করেছিলাম: var paramPlaceholder = "{" & paramNameRoot & "}"; Debug.Assert(cmd.CommandText.Contains(paramPlaceholder), "Parameter Name Root must exist in the Source Query"); যদি তারা কোয়েরির সাথে প্যারামনেমরুটটি মেলে ভুলে যায় তবে এটি ডিভসকে সহায়তা করা উচিত।
এমটিগ্লিট

37

অন্যান্য জায়গায় এটি সহজে ব্যবহারযোগ্য করে তোলার জন্য ব্রায়ান যে উত্তর দিয়েছিল তার উত্তরটি আমি প্রসারিত করতে চেয়েছিলাম।

/// <summary>
/// This will add an array of parameters to a SqlCommand. This is used for an IN statement.
/// Use the returned value for the IN part of your SQL call. (i.e. SELECT * FROM table WHERE field IN (returnValue))
/// </summary>
/// <param name="sqlCommand">The SqlCommand object to add parameters to.</param>
/// <param name="array">The array of strings that need to be added as parameters.</param>
/// <param name="paramName">What the parameter should be named.</param>
protected string AddArrayParameters(SqlCommand sqlCommand, string[] array, string paramName)
{
    /* An array cannot be simply added as a parameter to a SqlCommand so we need to loop through things and add it manually. 
     * Each item in the array will end up being it's own SqlParameter so the return value for this must be used as part of the
     * IN statement in the CommandText.
     */
    var parameters = new string[array.Length];
    for (int i = 0; i < array.Length; i++)
    {
        parameters[i] = string.Format("@{0}{1}", paramName, i);
        sqlCommand.Parameters.AddWithValue(parameters[i], array[i]);
    }

    return string.Join(", ", parameters);
}

আপনি নিম্নলিখিত হিসাবে এই নতুন ফাংশন ব্যবহার করতে পারেন:

SqlCommand cmd = new SqlCommand();

string ageParameters = AddArrayParameters(cmd, agesArray, "Age");
sql = string.Format("SELECT * FROM TableA WHERE Age IN ({0})", ageParameters);

cmd.CommandText = sql;


সম্পাদনা করুন: এখানে একটি জেনেরিক প্রকরণ রয়েছে যা যে কোনও ধরণের মানের অ্যারে নিয়ে কাজ করে এবং এটি এক্সটেনশন পদ্ধতি হিসাবে ব্যবহারযোগ্য:

public static class Extensions
{
    public static void AddArrayParameters<T>(this SqlCommand cmd, string name, IEnumerable<T> values) 
    { 
        name = name.StartsWith("@") ? name : "@" + name;
        var names = string.Join(", ", values.Select((value, i) => { 
            var paramName = name + i; 
            cmd.Parameters.AddWithValue(paramName, value); 
            return paramName; 
        })); 
        cmd.CommandText = cmd.CommandText.Replace(name, names); 
    }
}

তারপরে আপনি এই এক্সটেনশন পদ্ধতিটি নিম্নরূপ ব্যবহার করতে পারেন:

var ageList = new List<int> { 1, 3, 5, 7, 9, 11 };
var cmd = new SqlCommand();
cmd.CommandText = "SELECT * FROM MyTable WHERE Age IN (@Age)";    
cmd.AddArrayParameters("Age", ageList);

অ্যাডআররেপ্রেমেটারগুলিকে কল করার আগে আপনি কমান্ডটেক্সট সেট করেছেন তা নিশ্চিত করুন।

এছাড়াও নিশ্চিত করুন যে আপনার প্যারামিটারের নামটি আপনার বিবৃতিতে অন্য কোনও কিছুর সাথে আংশিক মিলবে না (যেমন @ অ্যাজএফচিল্ড)


1
এখানে একটি জেনেরিক প্রকরণ যা কোনও প্রকারের মানগুলির অ্যারে নিয়ে কাজ করে এবং এটি একটি এক্সটেনশন পদ্ধতি হিসাবে ব্যবহারযোগ্য: পাবলিক স্ট্যাটিক শূন্যতা AddArrayParaters <T> (এই SqlCommand cmd, স্ট্রিং নাম, IEnumerable <T> মান) names var নাম = স্ট্রিং.জাইন (",", মান। cmd.CommandText = cmd.CommandText.Replace (নাম, নাম); }
অ্যাডাম নিমিটফ

এই উত্তরটির সাথে মাইনর ইস্যুটি AddWithValueফাংশনটির সাথে রয়েছে, আপনি যে কোনও সুযোগটি ঠিক করতে পারেন?
ডেভিডজি 3'18

এই উত্তরটি ভুল কারণ এটির স্কেলিবিলিটি এবং পারফরম্যান্স রয়েছে এবং এটি কোডিংয়ের খারাপ অভ্যাসগুলি প্রচার করে।
ইগোর লেভিকি

24

আপনি যদি "ডিপার" এর মতো কোনও সরঞ্জাম ব্যবহার করতে পারেন তবে এটি সহজভাবে হতে পারে:

int[] ages = { 20, 21, 22 }; // could be any common list-like type
var rows = connection.Query<YourType>("SELECT * from TableA WHERE Age IN @ages",
          new { ages }).ToList();

ড্যাপার পৃথক পরামিতি এই unwrapping হ্যান্ডেল করা হবে আপনার জন্য


ড্যাপার প্রচুর নির্ভরতা
টানেছে

@ এমল্ট হাহ? না, তা হয় না; নেটফেক্সে: "কোনও নির্ভরতা নেই"; ns2.0 উপর, শুধু "System.Reflection.Emit.Lightweight" - এবং আমরা সম্ভবত অপসারণ করতে পারে যে যদি আমরা একটি necroreapp লক্ষ্য যোগ
মার্ক Gravell

আমার আলোচনা ছিনতাই করার অর্থ ছিল না, তবে আমি তা করেছি ... এখন পর্যন্ত আমি কোনও এনপিগএসকিএল ব্যবহার করি যা '{1,2,3}'কোনও ফাংশনের স্টাইল আর্গুমেন্ট হিসাবে (অ্যারেজটি যেখানে নেই) এর মতো জরিমানা পরিচালনা করে , তবে আমি বরং প্লেইন ওডিবিসি ব্যবহার করি যদি না অ্যারে ঝামেলা। আমার ধারণা এই ক্ষেত্রে আমারও ড্যাপার ওডিবিসি দরকার হবে। এটি এটি টানতে চায় তা এখানে। snipboard.io/HU0RpJ.jpg । সম্ভবত আমার ড্যাপার উপর আরও পড়তে হবে ...
mlt

16

আপনি যদি এমএস এসকিউএল সার্ভার ২০০৮ এবং এর উপরে ব্যবহার করছেন তবে আপনি এখানে বর্ণিত টেবিল-মূল্যবান পরামিতিগুলি ব্যবহার করতে পারেন http://www.sommarskog.se/arrays-in-sql-2008.html

১. প্রতিটি প্যারামিটার ধরণের জন্য আপনি ব্যবহার করবেন তার জন্য একটি সারণী প্রকার তৈরি করুন

নিম্নলিখিত কমান্ডটি পূর্ণসংখ্যার জন্য একটি সারণী প্রকার তৈরি করে:

create type int32_id_list as table (id int not null primary key)

২) সহায়ক পদ্ধতি প্রয়োগ করুন

public static SqlCommand AddParameter<T>(this SqlCommand command, string name, IEnumerable<T> ids)
{
  var parameter = command.CreateParameter();      

  parameter.ParameterName = name;
  parameter.TypeName = typeof(T).Name.ToLowerInvariant() + "_id_list";
  parameter.SqlDbType = SqlDbType.Structured;
  parameter.Direction = ParameterDirection.Input;

  parameter.Value = CreateIdList(ids);

  command.Parameters.Add(parameter);
  return command;
}

private static DataTable CreateIdList<T>(IEnumerable<T> ids)
{
  var table = new DataTable();
  table.Columns.Add("id", typeof (T));

  foreach (var id in ids)
  {
    table.Rows.Add(id);
  }

  return table;
}

৩.এমন ব্যবহার করুন

cmd.CommandText = "select * from TableA where Age in (select id from @age)"; 
cmd.AddParameter("@age", new [] {1,2,3,4,5});

1
সোনারকিউব ব্যবহার করার সময় লাইনটি table.Rows.Add(id);একটি ছোট কোডের গন্ধে আসে। আমি foreach ভিতরে এই বিকল্প ব্যবহৃত: var row = table.NewRow(); row["id"] = id; table.Rows.Add(row);
পোগোসামা

1
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত, বিশেষত যদি এটি আরও কলামগুলি গ্রহণ করার জন্য গ্রহণ করা হয়েছিল।
ইগোর লেভিকি

10

যেহেতু একটি পদ্ধতি চালু আছে

SqlCommand.Parameters.AddWithValue(parameterName, value)

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

প্রশ্ন:

SELECT * from TableA WHERE Age IN (@age)

ব্যবহার:

sqlCommand.AddParametersWithValues("@age", 1, 2, 3);

এক্সটেনশন পদ্ধতি:

public static class SqlCommandExtensions
{
    public static void AddParametersWithValues<T>(this SqlCommand cmd,  string parameterName, params T[] values)
    {
        var parameterNames = new List<string>();
        for(int i = 0; i < values.Count(); i++)
        {
            var paramName = @"@param" + i;
            cmd.Parameters.AddWithValue(paramName, values.ElementAt(i));
            parameterNames.Add(paramName);
        }

        cmd.CommandText = cmd.CommandText.Replace(parameterName, string.Join(",", parameterNames));
    }
}

1
দেখে মনে হচ্ছে এই এক্সটেনশন পদ্ধতির কয়েকটি পুনরাবৃত্তি কয়েকটি উত্তর জুড়ে রয়েছে। যদিও আমি এটি ব্যবহার করেছি, তাই আমি এটির উপরে ভোট দিচ্ছি :-)
ড্যান ফোর্বস

প্যারামিটার নামের জন্য একটি স্ট্যাটিক সূচক ব্যবহার করা ভাল
shmnff

6

আমি অন্যভাবে প্রস্তাব দিতে চাই, IN অপারেটরের সাথে সীমাবদ্ধতা কীভাবে সমাধান করা যায়।

উদাহরণস্বরূপ আমরা নিম্নলিখিত জিজ্ঞাসা আছে

select *
from Users U
WHERE U.ID in (@ids)

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

declare @ids nvarchar(max) = '1,2,3'

SELECT *
FROM Users as U
CROSS APPLY string_split(@ids, ',') as UIDS
WHERE U.ID = UIDS.value

এখন আমরা কমা দ্বারা পৃথককৃত মানগুলির একটি পরামিতি সংখ্যা সহজেই পাস করতে পারি।


সেরা এবং আমি সবচেয়ে পরিষ্কার উপায় খুঁজে পেয়েছি, আপনার সামঞ্জস্যতা বর্তমান আছে।
ব্যবহারকারী 1040975

4

WHOE..IN ধারাটিতে ধসে পড়া প্যারামিটার হিসাবে আইটেমের অ্যারে পাস করা ব্যর্থ হবে যেহেতু ক্যোয়ারী রূপ নেবে WHERE Age IN ("11, 13, 14, 16")

তবে আপনি XML বা JSON এ সিরিয়ালযুক্ত অ্যারে হিসাবে আপনার প্যারামিটারটি পাস করতে পারেন:

nodes()পদ্ধতি ব্যবহার :

StringBuilder sb = new StringBuilder();

foreach (ListItem item in ddlAge.Items)
  if (item.Selected)
    sb.Append("<age>" + item.Text + "</age>"); // actually it's xml-ish

sqlComm.CommandText = @"SELECT * from TableA WHERE Age IN (
    SELECT Tab.col.value('.', 'int') as Age from @Ages.nodes('/age') as Tab(col))";
sqlComm.Parameters.Add("@Ages", SqlDbType.NVarChar);
sqlComm.Parameters["@Ages"].Value = sb.ToString();

ব্যবহার OPENXMLপদ্ধতি :

using System.Xml.Linq;
...
XElement xml = new XElement("Ages");

foreach (ListItem item in ddlAge.Items)
  if (item.Selected)
    xml.Add(new XElement("age", item.Text);

sqlComm.CommandText = @"DECLARE @idoc int;
    EXEC sp_xml_preparedocument @idoc OUTPUT, @Ages;
    SELECT * from TableA WHERE Age IN (
    SELECT Age from OPENXML(@idoc, '/Ages/age') with (Age int 'text()')
    EXEC sp_xml_removedocument @idoc";
sqlComm.Parameters.Add("@Ages", SqlDbType.Xml);
sqlComm.Parameters["@Ages"].Value = xml.ToString();

এটি এসকিউএল দিকে আরও কিছুটা এবং আপনার একটি সঠিক এক্সএমএল (মূল সহ) প্রয়োজন।

ব্যবহার OPENJSONপদ্ধতি (এসকিউএল সার্ভার 2016+):

using Newtonsoft.Json;
...
List<string> ages = new List<string>();

foreach (ListItem item in ddlAge.Items)
  if (item.Selected)
    ages.Add(item.Text);

sqlComm.CommandText = @"SELECT * from TableA WHERE Age IN (
    select value from OPENJSON(@Ages))";
sqlComm.Parameters.Add("@Ages", SqlDbType.NVarChar);
sqlComm.Parameters["@Ages"].Value = JsonConvert.SerializeObject(ages);

নোট করুন যে শেষ পদ্ধতির জন্য আপনার 130++ তেও সামঞ্জস্যতা স্তর থাকতে হবে।


0

ওভারভিউ: পরামিতি প্রকার সেট করতে DbType ব্যবহার করুন।

var parameter = new SqlParameter();
parameter.ParameterName = "@UserID";
parameter.DbType = DbType.Int32;
parameter.Value = userID.ToString();

var command = conn.CreateCommand()
command.Parameters.Add(parameter);
var reader = await command.ExecuteReaderAsync()

-1

ব্যবহার করুন .AddWithValue(), সুতরাং:

sqlComm.Parameters.AddWithValue("@Age", sb.ToString().TrimEnd(','));

বিকল্পভাবে, আপনি এটি ব্যবহার করতে পারেন:

sqlComm.Parameters.Add(
    new SqlParameter("@Age", sb.ToString().TrimEnd(',')) { SqlDbType = SqlDbType. NVarChar }
    );

আপনার মোট কোড নমুনা নীচের দিকে তাকান হবে:

string sqlCommand = "SELECT * from TableA WHERE Age IN (@Age)";
SqlConnection sqlCon = new SqlConnection(connectString);
SqlCommand sqlComm = new SqlCommand();
sqlComm.Connection = sqlCon;
sqlComm.CommandType = System.Data.CommandType.Text;
sqlComm.CommandText = sqlCommand;
sqlComm.CommandTimeout = 300;

StringBuilder sb = new StringBuilder();
foreach (ListItem item in ddlAge.Items)
{
     if (item.Selected)
     {
         sb.Append(item.Text + ",");
     }
}

sqlComm.Parameters.AddWithValue("@Age", sb.ToString().TrimEnd(','));

// OR

// sqlComm.Parameters.Add(new SqlParameter("@Age", sb.ToString().TrimEnd(',')) { SqlDbType = SqlDbType. NVarChar });

বয়স ক্ষেত্রের প্রকারটি এনভিসিচার নয় এটা কোন ব্যাপার?
ইওংওয়ে জিং

এটা করা উচিত নয়। বিশেষত দ্বিতীয় পদ্ধতিটি নিয়ে। আপনি স্পষ্টভাবে টাইপ নির্দিষ্ট করুন।
কাইল রোজেন্ডো

আমি উভয় পদ্ধতি ব্যবহার করি, এটি এখনও কাজ করে না। আমি সেই স্ট্রিংটি
সামাল

আমি আপনাকে সত্যিই বুঝতে পারছি না। আপনি যখন বলেন যে এটি কাজ করে না, এটি কি ব্যতিক্রম ছুঁড়ে ফেলে? এটার কাজ কি?
কাইল রোজেন্ডো

1
এটি ব্যতিক্রম ছুঁড়ে না, কিছুই ফিরে। তবে আমি স্টুডিও ম্যানেজমেন্টে টি-এসকিউএল চালাচ্ছি, এটি অনেক ফলাফল দেয়।
ইওংওয়ে জিং

-1

ব্রায়ানের উত্তরের এখানে একটি সামান্যতম রূপ যা অন্য কেউ দরকারী মনে করতে পারে। কীগুলির একটি তালিকা নেয় এবং এটি প্যারামিটার তালিকায় ফেলে দেয়।

//keyList is a List<string>
System.Data.SqlClient.SqlCommand command = new System.Data.SqlClient.SqlCommand();
string sql = "SELECT fieldList FROM dbo.tableName WHERE keyField in (";
int i = 1;
foreach (string key in keyList) {
    sql = sql + "@key" + i + ",";
    command.Parameters.AddWithValue("@key" + i, key);
    i++;
}
sql = sql.TrimEnd(',') + ")";

এই উত্তরটি ভুল কারণ এটির স্কেলিবিলিটি এবং পারফরম্যান্স রয়েছে এবং এটি কোডিংয়ের খারাপ অভ্যাসগুলি প্রচার করে।
ইগোর লেভিকি


-5

এটি চেষ্টা করে দেখুন

StringBuilder sb = new StringBuilder(); 
foreach (ListItem item in ddlAge.Items) 
{ 
     if (item.Selected) 
     { 
          string sqlCommand = "SELECT * from TableA WHERE Age IN (@Age)"; 
          SqlConnection sqlCon = new SqlConnection(connectString); 
          SqlCommand sqlComm = new SqlCommand(); 
          sqlComm.Connection = sqlCon; 
          sqlComm.CommandType = System.Data.CommandType.Text; 
          sqlComm.CommandText = sqlCommand; 
          sqlComm.CommandTimeout = 300; 
          sqlComm.Parameters.Add("@Age", SqlDbType.NVarChar);
          sb.Append(item.Text + ","); 
          sqlComm.Parameters["@Age"].Value = sb.ToString().TrimEnd(',');
     } 
} 

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