Перенос информации из DataGriedView (WinForm) в SQL Server 2014

148
02 июля 2018, 01:30

Друзья доброго дня. Проблема - из DataGriedView переношу данные на сервер, произвожу над ними операции и возвращаю обратно, однако если один из столбцов не содержит каких-либо значений, то прилетает ошибка - "System.ArgumentException: "Тип столбца "Гост" не поддерживается. Тип равен "Object"" Я так понимаю, что проблема кроется в типах данных БД. Данные вкручиваю на сервер используя User-Defined TableType. Скрипт таблицы -

create TYPE [dbo].[MyTableType] AS TABLE(
[Наименование] [nvarchar](2000),
[Гост] [nvarchar](2000),
[ЕИ] [nvarchar](50))

Далее использую процедуру -

    create PROCEDURE [dbo].[InsertTable]
    @myTableType MyTableType readonly
AS
BEGIN
    select *
    from @myTableType TT LEFT JOIN dbo.Smet_Svod SS
    ON TT.Наименование = SS.[Сметное имя]
END

На стороне приложения код передачи такой -

        private void btnOK_Click(object sender, EventArgs e)
    {
        FindUserSmet US = new FindUserSmet();
        dgvSmets.DataSource = (US.FindUS(dgvSmets.DataSource)).Tables[0];
    }
    public class FindUserSmet : ConnectionStr
{    
    public DataSet FindUS(object name)
    {
        // название процедуры in SQL_Server
        string sqlExpression = "InsertTable";
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            //Create a SqlDataAdapter for the Suppliers table.
            SqlDataAdapter adapter = new SqlDataAdapter();
            connection.Open();
            SqlCommand command = new SqlCommand(sqlExpression, connection);
            // указываем, что команда представляет хранимую процедуру
            command.CommandType = System.Data.CommandType.StoredProcedure;
            // параметр для ввода имени
            SqlParameter nameParam = new SqlParameter
            {
                ParameterName = "@myTableType",
                Value = name
            };
            // добавляем параметр
            command.Parameters.Add(nameParam);
            // Set the SqlDataAdapter's SelectCommand.
            adapter.SelectCommand = command;
            // Fill the DataSet.
            DataSet dataSet = new DataSet();
            adapter.Fill(dataSet);
            return dataSet;
        }
    }
}

Как поправить код что-бы типы данных уходили правильно при пустом столбце? Спасибо!

READ ALSO
c# перегрузка операторов

c# перегрузка операторов

На пути изучения языка C# мне встретилась тема "перегрузка операторов"Вопрос такой : зачем вообще нужна эта перегрузка? Не усложняет ли эта...

162
C# разница между & и &&

C# разница между & и &&

Имеется следующий блок кода

184
Проблема с кодировкой кириллицы

Проблема с кодировкой кириллицы

Производится шифрование текста в изображение (цифровая стеганография, метод LSB)Но при расшифровке текста из изображения (именно кириллицы),...

208
Бинарный поиск строки в массиве байт на C#

Бинарный поиск строки в массиве байт на C#

У меня есть бинарный файл, в котором лежат одноразмерные объекты (с именем пользователя) отсортированные по имени пользователяЕсть чужой...

249