當我嘗試背後叫我的存儲過程的代碼的形式在我的網站,我得到這個錯誤。我一直停留相當長的一段時間了,因爲我不知道的任何地方我轉換或聲明的值作爲整數做。這是我的SQL語句:錯誤轉換nvarchar的數據類型爲int
create procedure GetRepPhoneID
@Rep nvarchar(100),
@phoneID nvarchar(100) output
as
set @phoneID = (select concat(CustomerRepPh, '~', cast(RepID as nvarchar(100))) as 'PhoneAndID'
from Reps
where [email protected])
return @phoneID
go
從我的C#代碼
那麼後面我試圖調用存儲過程:
公共靜態字符串GetRepPhone(字符串衆議員) { 字符串連接= WebConfigurationManager.ConnectionStrings [ 「JDC_DatabaseConnectionString」]的ConnectionString。 的SqlConnection的SqlConnection =新的SqlConnection(連接);
//This funciton will take all of the values and create them.
try
{
sqlConnection.Open();
}
catch (Exception err)
{
Console.WriteLine(err.Message);
}
SqlCommand cmd = new SqlCommand();
cmd.Connection = sqlConnection;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "GetRepPhoneID"; //getting the procedure created in SQL.
SqlParameter CustomerParam = new SqlParameter();
CustomerParam.ParameterName = "Rep";
CustomerParam.SqlDbType = SqlDbType.NVarChar;
CustomerParam.Value = Rep;
CustomerParam.Direction = ParameterDirection.Input;
//We are using an output parameter not a return one because it is a string.
SqlParameter ReturnParam = new SqlParameter("phoneID", SqlDbType.NVarChar, 100);
ReturnParam.Direction = ParameterDirection.Output;
cmd.Parameters.Add(CustomerParam);
cmd.Parameters.Add(ReturnParam);
cmd.ExecuteNonQuery();
sqlConnection.Close();
return ReturnParam.Value.ToString();
}
我做同樣的事情多次在我的代碼,但他們都返回整數所以一直沒有異常,所以我知道它應該工作的錯誤。錯誤正在cmd.ExecuteNonQuery()
行中引發。確切的錯誤是:
Conversion failed when converting the nvarchar value '(111)222-6666~29' to data type int.
我明白,我不能說字符串轉換爲整數,但我不認爲在我的代碼的任何地方,我宣佈一個整數,或者我試圖轉換。
任何幫助將不勝感激。謝謝。
感謝您的幫助。這擺脫了原來的錯誤,但現在是拋出'字符串[1]:Size屬性有0.' – 2015-01-15 17:20:37
@ChaseErnst我剛纔編輯與帕拉姆聲明C#部分的大小無效。 – 2015-01-15 17:23:22
這使我回到原來的錯誤。我已將問題更新到我當前的代碼。 – 2015-01-15 17:26:58