私は自分のプロジェクトに取り組んでおり、asp.net C#と奇妙な結果を出しており、スカラー変数を返すストアドプロシージャです。要するに、私はユーザー名を返そうとしていますが、名前の最初の文字は奇妙です。SQL Serverから奇妙な結果が返される
私はコードを数十回繰り返しました。しかし、私はまだエラーを見つけることができません。誰かがmystakeここ
を見つけることができる場合、私は本当に感謝 である私のストアドプロシージャ:
set ANSI_NULLS ON
GO
set QUOTED_IDENTIFIER ON
go
ALTER PROCEDURE [one_two].[team5GetLostPassword]
(
@user_password varchar(50),
@email varchar(50),
@user_name varchar(50) out,
@user_exist int out
)
AS
BEGIN
declare @user_fname varchar(50);
declare @user_lname varchar(50);
declare @user_id int;
set @user_exist = 0;
SET NOCOUNT ON;
IF EXISTS(select user_email from team5_user_detail where user_email LIKE @email)
begin
set @user_id = (select userid from team5_user_detail where user_email Like @email);
update team5_user Set user_password = @user_password where userid = @user_id;
set @user_name = (select user_lname from team5_user_detail where userid = @user_id);
set @user_exist = 1;
end
END
と私のC#のコード
protected bool IsValidUser()
{
myConn = new SqlConnection(myConStr);
myCommand = new System.Data.SqlClient.SqlCommand("team5GetLostPassword", myConn);
myCommand.CommandType = CommandType.StoredProcedure;
myCommand.Parameters.AddWithValue("@user_password", userPasswordEncrypted);
myCommand.Parameters.AddWithValue("@email", userEmailString);
myCommand.Parameters.AddWithValue("@user_name", "").Direction = ParameterDirection.Output;
myCommand.Parameters.AddWithValue("@user_exist", 0).Direction = ParameterDirection.Output;
try
{
myConn.Open();
myCommand.ExecuteScalar();
userExist = myCommand.Parameters["@user_exist"].Value.ToString();
userName = myCommand.Parameters["@user_name"].Value.ToString();
}
catch (Exception exep)
{
}
finally
{
myConn.Close();
}
if (userExist.Contains("1"))
return true;
else
return false;
}
あなたはSqlParameterのサイズプロパティを設定する必要が
Keltex、 にユーザ名パラメータのLengthプロパティを設定してみてくださいあなたの答えは、問題を解決している、ありがとうございました。 コードを変更してsizeプロパティを追加したところ、適切なフルユーザー名を返すようになりました。 ありがとうございました –