Member 8583441 Ответов: 2

Не удается конвертировать из 'системы.данных.sqlclient как.объект sqlconnection' в 'строку'


Когда я возвращаюсь в connectionString в форматную строку я получаю сообщение об ошибке, говорящее не может конвертировать из 'системы.Данных.Sqlclient как.Объект sqlconnection' в 'строку'

Кто-нибудь может мне объяснить

Что я уже пробовал:

public static int ExecuteNonQuery(string connectionString, CommandType commandType, string commandText, params SqlParameter[] commandParameters)
{
    if (connectionString == null || connectionString.Length == 0) throw new ArgumentNullException("connectionString");

    // Create & open a SqlConnection, and dispose of it after we are done
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();

        // Call the overload that takes a connection in place of the connection string
        return ExecuteNonQuery(connection, commandType, commandText, commandParameters);
    }
}

Member 8583441

Ошибка возникает при возврате ExecuteNonQuery(connection, commandType, commandText, commandParameters); эта строка при подключении

2 Ответов

Рейтинг:
5

#realJSOP

Я напечатал это с верхней части моей головы, так что это может потребовать некоторой незначительной настройки, но это более правильный способ сделать это.

public static int ExecuteNonQuery(string connectionString, CommandType commandType, string commandText, params SqlParameter[] commandParameters)
{
    int result = 0;
    if (string.IsNullOrEmpty(connectionString)
    {
        throw new ArgumentNullException("connectionString");
    }

    try
    {
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();
            using SqlCommand cmd = new SqlCommand(commandText, conn))
            { 
                cmd.CommandType = commandType;
                cmd.Parameters.AddRange(commandParameters);
                result = cmd.ExecuteNonQuery();
            }
        }
    }
    catch (Exception ex)
    {
       // handle the exception here
    }
    return result;
}


Member 8583441

Привет Джон, я пробовал этот код, но получаю ошибку в cmd.Parameters с надписью " Property or Indexer "SqlCommand.Параметры" не могут быть назначены-он доступен только для чтения

#realJSOP

Я сказал, что его нужно подправить. Я отредактировал свой ответ.

Member 8583441

Спасибо за решение Джон

Рейтинг:
1

Wendelius

Почему вы вызываете один и тот же метод рекурсивно? Ты внутри ExecuteNonQuery метод и вызов его снова.

Вы собирались позвонить в полицию? ExecoteNonQuery метод выполнения команды

...
connection.Open();
SqlCommand command = new SqlCommand(commandText, connection);
command.Connection.Open();
command.ExecuteNonQuery();
...


Member 8583441

Моя проблема не была решена с помощью этого решения

Wendelius

Возможно, вы могли бы дать больше информации о проблеме. Вы все еще сталкиваетесь с ошибкой или у вас есть какая-то другая проблема?

Wendelius

Вы также можете просмотреть следующую статью. Это может прояснить способ использования объектов Sql: Правильное выполнение операций с базой данных[^]

Member 8583441

Извините, Привет, Венделиус, сэр..... Я не упоминаю об этом прежде чем сказать Привет в предыдущем комментарии