Коллекция параметров sql

У меня есть 5 параметров, и я хочу отправить их методу:

public static SqlCommand getCommand(string procedure, SqlParameter[] parameter)
{
   Sqlcommand cmd;
   return cmd
}

Могу ли я отправить эти параметры за один раз вот так?

SqlParameterCollection prm;
prm.Add(p1);
prm.Add(p2);
prm.Add(p3);
prm.Add(p4);
prm.Add(p5);
sqlcommand cmd = getCommand(prm);
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
14
0
63 697
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

Я не понимаю, что в этом плохого? Вы знаете, что если это .NET, вам нужно прикрепить параметры к объекту SqlCommand?

Так:

SqlCommand query = new SqlCommand(sqlString, Connection);
query.Parameters.AddWithValue(parameter,valueToPass);

так далее?

Извините, если это не связано, не совсем уверены в своем вопросе? Ваш метод на самом деле ничего не делает, я полагаю, что вы не упомянули код и просто вставили пустышку, чтобы задать вопрос? Вы можете передать массив в качестве аргумента, так что вам просто нужно вылить его?

Если у меня SqlHelper метод вроде этого int ExecuteNonQuery (строка sql, params SqlParameter [] listParams)?

Kiquenet 13.04.2015 10:19

Что ж, это не будет компилироваться, потому что в вашем вызове getCommand вы не передаете строку с процедурой, но что касается массива, это не должно работать.

Ответ принят как подходящий

Или создайте массив параметров вручную:

SqlParameter[] parameter = {
new SqlParameter(...), 
new SqlParameter(...), 
new SqlParameter(...)
};

Но я не вижу, что должно быть не так в вашем подходе. Он простой, читаемый и понятный.

Что насчет значений, допускающих значение NULL, для установленного значения DBNull?

Kiquenet 13.04.2015 10:18

Используя это в качестве вдохновения, этот код сработал для меня:

List<SqlCeParameter> parameters = new List<SqlCeParameter>();

parameters.Add(new SqlCeParameter("@Username", NewUsername));
parameters.Add(new SqlCeParameter("@Password", Password));

cmd.Parameters.AddRange(parameters.ToArray());

Form1.cs

    static private void FunctionCall()
    {

        string connectionString = "DATA Source=nwind;server=GRAPHICS\SQLEXPRESS;Persist Security Info=False;Integrated Security=SSPI;Connect Timeout=30";
        string sSqlQuery;

        DataSet ds;
        DataTable dt;

        // Prepare SQL Query
        sSqlQuery = @"
        select content " +
        "from " +
        "[TBL] where id = '000-000'";

        SqlParameter[] sqlParams = {
                new SqlParameter("",SqlDbType.Int), 
                new SqlParameter("",SqlDbType.VarChar), 
                new SqlParameter("",SqlDbType.VarChar)
        };

        // Read from database
        ds = SqlHelper.ExecuteNonQuery(connectionString, sSqlQuery, CommandType.Text, sqlParams);
        dt = ds.Tables[0];
     }

SqlHelper.cs

// Выполняет не запрос

public static int ExecuteNonQuery (string connectionString, string cmdText, CommandType type, SqlParameter[] prms)
        {
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                using (SqlCommand cmd = new SqlCommand(cmdText, conn))
                {
                    cmd.CommandType = type;

                if (prms != null)
                {
                    foreach (SqlParameter p in prms)
                    {
                        cmd.Parameters.Add(p);
                    }
                }
                conn.Open();
                return cmd.ExecuteNonQuery();
            }
        }
    }

Что насчет значений, допускающих значение NULL, для установленного значения DBNull?

Kiquenet 13.04.2015 10:20

Вот мой код. Вы можете использовать все свойства параметров, такие как имя, значение, тип и т. д.

int SelectedListID = 6;
string selectedPrefix = "IP";
string sqlQuery = "select * from callHistory where ImportID=@IMPORTID and Prefix=@PREFIX"

SqlParameter[] sParams = new SqlParameter[2]; // Parameter count

sParams[0] = new SqlParameter();
sParams[0].SqlDbType = SqlDbType.Int;
sParams[0].ParameterName = "@IMPORTID";
sParams[0].Value = SelectedListID;

sParams[1] = new SqlParameter();
sParams[1].SqlDbType = SqlDbType.VarChar;
sParams[1].ParameterName = "@PREFIX";
sParams[1].Value = selectedPrefix;


SqlCommand cmd = new SqlCommand(sqlQuery, sConnection);

if (sParams != null)
{
    foreach (SqlParameter sParam in sParams)
    {
        cmd.Parameters.Add(sParam);
        Application.DoEvents();
    }
}

1.

public IEnumerable<SqlParameter> GetAndSetParameters(List<Tuple<string, string>> parameters){
            List<SqlParameter> paramlist = new List<SqlParameter>();

            foreach (var item in parameters)
        {
            paramlist.Add(new SqlParameter(item.Item1, item.Item2));
        }
        return paramlist;
    }

2. передать параметры

 public List<Tuple<string, string>> GetUserParameter(){
        List<Tuple<string, string>> list = new List<Tuple<string, string>>();
                list.Add(new Tuple<string, string>("@User",user.UserID));
                   return list;
        }

3. наконец используйте это:

 SqlCommand oCmd = new SqlCommand(oString, myConnection);
                oCmd.Parameters.AddRange(GetAndSetParameters(GetUserParameter()).ToArray());

Другие вопросы по теме