Ошибка конвертации при запросе insert

130
09 декабря 2019, 09:20

Есть таблица с данными, хочу туда добавить новую строку. Но дословно возникает такая ошибка.

System.Data.SqlClient.SqlException: "Conversion failed when converting the varchar value '???????? ?????? ' to data type smallint."

Данные берутся из текстового массива и записываются в таблицу в базе данных. Сама таблица выглядит так.

CREATE TABLE [dbo].[METHODNAME] (
    [METHODID]        SMALLINT       NOT NULL,
    [DESCRIPTION]     NVARCHAR (250) NULL,
    [TEXTDESCRIPTION] NVARCHAR (250) NULL,
    [METHODTYPEID]    TINYINT        NULL,
    CONSTRAINT [PK_METHODNAME] PRIMARY KEY CLUSTERED ([METHODID] ASC),
    CONSTRAINT [FK_METHODNAME_METHODTYPEID] FOREIGN KEY ([METHODTYPEID]) REFERENCES [dbo].[METHODTYPES] ([METHODTYPEID]) NOT FOR REPLICATION
);

GO
CREATE NONCLUSTERED INDEX [iMETHODTYPEID_METHODNAME]
    ON [dbo].[METHODNAME]([METHODTYPEID] ASC);

Вот так в программе я это делаю.

using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string connextionstring ="Integrated Security=SSPI;Pooling=false;Data Source=(localdb)\\mssqllocaldb;Initial Catalog=Solution21";
            string[] words = new[] {"1058", "ПНД Ф 12.16.1", "ПНД Ф 12.16.1", ""};
            using (SqlConnection connection = new SqlConnection(connextionstring))
            {
                connection.Open();
                var a = Int16.Parse(words[0]);
                var b = words[1];
                var с = words[2];
              //  var d = words[3];
                SqlCommand command19 = new SqlCommand("INSERT INTO METHODNAME ( METHODID , DESCRIPTION, TEXTDESCRIPTION) VALUES (@a, @b,@c)",
                    connection);
                command19.Parameters.AddWithValue("@a", a);
                command19.Parameters.AddWithValue("@b", b);
                command19.Parameters.AddWithValue("@c", с);
              //  command19.Parameters.AddWithValue("@d", d);
                command19.ExecuteNonQuery();
            }
            Console.ReadKey();
        }
    }
}

Вопрос как избавиться от этой ошибки? Пробовал команду писать так.

 command19.Parameters.Add("@a",SqlDbType.SmallInt);
 command19.Parameters["@a"].Value = a;
 command19.Parameters.Add("@b", SqlDbType.NVarChar,250);
 command19.Parameters["@b"].Value = b;
 command19.Parameters.Add("@c", SqlDbType.NVarChar,250);
 command19.Parameters["@c"].Value = с;
Answer 1
    static void InsertMethodName(String connectionString, String[] values)
    {
        using (var connection = new SqlConnection(connectionString))
        {
            using (var command = connection.CreateCommand())
            {
                command.CommandText = @"INSERT INTO METHODNAME(METHODID, DESCRIPTION, TEXTDESCRIPTION) VALUES(@a, @b, @c)";
                command.Parameters.AddWithValue("@a", Int16.Parse(values[0]));
                command.Parameters.AddWithValue("@b", values[1]);
                command.Parameters.AddWithValue("@c", values[2]);
                connection.Open();
                command.ExecuteNonQuery();
            }
        }
    }
READ ALSO
WebClient .com и .ru

WebClient .com и .ru

При запуске приложения, срабатывает апдейтерПодключение идет через WebClient

123
Вывод своего представление в поле Details

Вывод своего представление в поле Details

Есть некое приложение, приложение выводит список документов, и должно уметь показывать прикрепленные сканы оригиналов документовПопытался...

142
Столкновение с повёрнутым спрайтом

Столкновение с повёрнутым спрайтом

Я делаю игру, в которой шарик должен лететь к повёрнутой платформе и отталкиваться от её поверхностиУ меня есть код в методе Update, который...

131
Отправить POST запрос с помощью PHP

Отправить POST запрос с помощью PHP

нужно на данный URL https://streamingvk

151