2012-01-09 3 views
0

Я пытаюсь передать int со значением 1 в мою хранимую процедуру, но я получаю исключение из «Ошибка арифметического переполнения для типа данных tinyint , значение = -1. " Значение int равно 1, но исключение говорит о его -1, которое я не понимаю, почему. В любом случае я разместил код ниже. Я, вероятно, не вижу ничего очевидного.SqlException: ошибка арифметического переполнения для типа данных tinyint, value = -1

.net код

protected void btnUpdate_Click(object sender, EventArgs e) 
    { 
     string result = ""; 
     string currentFileName = (string)(Session["FileName"]); 
     string FileName = txtUploadStatus.Text; 
     string sSQL = "usp_imageloader_update"; 
     int ImgID = (int)(Session["ImgID"]); 

     using (SqlConnection dbConnection = new SqlConnection(CKS_app_settings.sql_conn_string_db)) 
     { 
      // SqlTransaction tn=null; 
      try 
      { 
       dbConnection.Open(); 
       //start Transaction 
       // tn = dbConnection.BeginTransaction(); 
       SqlCommand command = new SqlCommand(sSQL, dbConnection); 
       //command.Transaction = tn; 
       command.CommandText = sSQL; 
       command.CommandType = CommandType.StoredProcedure; 
       command.CommandTimeout = 1024; 
int Active = 0; 

       if (chkActive.Checked == true) 
       { 
        Active = 1; 
       } 
       else 
       { 

       } 

       if (currentFileName != FileName) 
       { 
        // Split entire file path to grab filename 
        string[] split = txtUploadStatus.Text.Split(new char[] { '\\' }); 
        FileName = split[06]; 
       } 
       else 
       { 
        FileName = txtUploadStatus.Text; 
       } 

       command.Parameters.AddWithValue("@p_image_id", ImgID); 
       command.Parameters.AddWithValue("@p_filename", FileName); 
       command.Parameters.AddWithValue("@p_Active", Active); 
       command.Parameters.AddWithValue("@p_url", txtUrl.Text); 
       command.Parameters.AddWithValue("@p_Title", txtImgTitle.Text); 
       command.Parameters.AddWithValue("@p_alt_text", txtAlt.Text); 
       int rowsAffected = command.ExecuteNonQuery(); 
      } 
      catch (SqlException ex) 
      { 
       // throw ex; 

       //If it failed for whatever reason, rollback the //transaction 
       //tn.Rollback();       
       //No need to throw because we are at a top level call and //nothing is handling exceptions 
       result = ex.InnerException.Message; 
      } 

хранимых процедур

USE [smsdb_test_griffin2] 
GO 
/****** Object: StoredProcedure [dbo].[usp_imageloader_update] Script Date: 01/09/2012 08:52:01 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
ALTER procedure [dbo].[usp_imageloader_update] 
@p_image_id INT, 
@p_filename VARCHAR(100), 
@p_Active TINYINT, 
@p_url VARCHAR(255), 
@p_Title VARCHAR(100), 
@p_alt_text VARCHAR(255) 
as 

UPDATE Image_Library_UK 
SET 
[email protected]_filename, 
[email protected]_Active, 
[email protected]_url, 
[email protected]_alt_text 

WHERE [email protected]_image_id 

ответ

2

У вас есть знак минуса перед вашим вызовом @p_active в заявлении обновления:

Active = - @ p_Active

Возможно, ваша проблема!

+0

Wow Я чувствую себя немного глупо, что зафиксировал его. Спасибо! –

+0

Не беспокойтесь, легко сделайте :) – Timbo

0

В вашей хранимой процедуре есть отрицательный символ перед @p_Active, назначая значение Active.

[email protected]_Active,

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