2012-05-20 3 views
3

В настоящее время я пытаюсь выполнить транзакцию для веб-приложения;Не удалось преобразовать значение параметра из строки в Int32

Не удалось преобразовать значение параметра из строки 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 

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

+0

Вы должны разобрать строку на Int.32 DataType –

+0

Пожалуйста, не префиксайте свои заголовки с помощью «C# SQL Server 2008» и т. Д. Для этого нужны теги. –

ответ

2

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

Эта линия следует читать так:

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

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

+0

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

0

Один из входов является строкой, то проверьте объявления для:

storeCode 
employeeId 
itemListNoId 

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

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

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

+1

появляется, потому что я ссылался на имя сотрудников вместо их идентификатора. – MasterP

+1

Может быть, вне темы, но все же: ваши параметры sholdn't be strings, если вы используете их для передачи значений int. –

1

Я предлагаю вам изменить тип параметров в методе.

в

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

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

Смежные вопросы