Вопрос по c#, sql, sql-server-2008 – Не удалось преобразовать значение параметра из строки в Int32

4

Однако в настоящее время я пытаюсь завершить транзакцию для веб-приложения;

Failed To Convert Parameter Value From A String To A Int32

Вот копия функции.

public static void completeTransaction(string storeCode, string employeeId, DateTime Date, string itemListNoId)
{
    using (SqlConnection conn = new SqlConnection("Data Source = ; Initial Catalog =Business ; Integrated Security = true;"))
    {
        using (SqlCommand command = new SqlCommand("dbo.completeTransaction", conn))
        {
            command.CommandType = CommandType.StoredProcedure;
            command.Parameters.Add("@storeCode", SqlDbType.Int).Value = storeCode;
            command.Parameters.Add("@employeeId", SqlDbType.Int).Value = employeeId;
            command.Parameters.Add("@Date", SqlDbType.DateTime).Value = Date;
            command.Parameters.Add("@itemListNoId", SqlDbType.Int).Value = itemListNoId;
            conn.Open();

            command.ExecuteNonQuery();
            conn.Close();
        }
    }
}

Моя таблица SQL Server содержит следующие таблицы и типы

storeCode INT
employee INT
Date DATETIME
itemListNoId INT

Любая помощь будет оценена.

Вы должны проанализировать строку в Int.32 DataType Nudier Mena
Пожалуйста, не начинайте с префикса «C # SQL Server 2008» ваши заголовки; и тому подобное. Вот для чего нужны теги. John Saunders

Ваш Ответ

3   ответа
2

что проблема в вашем первом параметре (storeCode). Вы пытаетесь отправить строку как параметр типа int.

Эта строка должна читаться так:

command.Parameters.Add("@storeCode", SqlDbType.Int).Value = Convert.ToInt32(storeCode);

Есть еще одна подозрительная вещь: имя параметра - storeCode, что подразумевает столбец varchar. Какое значение вы пытаетесь передать как storeCode? Вы уверены, что это int?

кажется, потому что я ссылался на имя сотрудника, а не на его удостоверение личности. MasterP
1

в

public static void completeTransaction(int storeCode, int employeeId, DateTime Date, string itemListNoId)

и преобразовать строки перед передачей значений в метод.

0

storeCode
employeeId
itemListNoId

я представляю себеstoreCode это строка Вы можете исправить это, проанализировав это какInt:

command.Parameters.Add("@storeCode", SqlDbType.Int).Value = int.Parse(storeCode);

Однако это вызовет проблемы, еслиstoreCode никогда не паразитирующийInt.

кажется, потому что я ссылался на имя сотрудника, а не на его удостоверение личности. MasterP
Может быть, не по теме, но все же: ваши параметры не должны быть строками, если вы используете их для передачи значений int.

Похожие вопросы