C# sql server返回的奇怪结果
我正在处理我的项目,在asp.net C#和返回标量变量的存储过程中产生了奇怪的结果。简而言之,我试图返回用户名,但是我只得到用户名的第一个字母,这很奇怪 我反复检查了几十次密码;但是我仍然找不到错误。 如果有人能找到我的照片,我会非常感激 以下是我的存储过程:C# sql server返回的奇怪结果,c#,.net,asp.net,sql-server,ado.net,C#,.net,Asp.net,Sql Server,Ado.net,我正在处理我的项目,在asp.net C#和返回标量变量的存储过程中产生了奇怪的结果。简而言之,我试图返回用户名,但是我只得到用户名的第一个字母,这很奇怪 我反复检查了几十次密码;但是我仍然找不到错误。 如果有人能找到我的照片,我会非常感激 以下是我的存储过程: set ANSI_NULLS ON GO set QUOTED_IDENTIFIER ON go ALTER PROCEDURE [one_two].[team5GetLostPassword] ( @user_passwor
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代码
您需要将SqlParameter的Size属性设置为要返回的数据长度
我认为在这种情况下您不想使用ExecuteScalar()。ExecuteScalar()用于返回结果集中第一行的第一列。由于您正在尝试从输出参数获取值,因此需要使用ExecuteOnQuery()。您需要将SqlParameter的Size属性设置为要返回的数据长度
我认为在这种情况下您不想使用ExecuteScalar()。ExecuteScalar()用于返回结果集中第一行的第一列。由于您正在尝试从输出参数获取值,因此需要使用ExecuteOnQuery().尝试将用户名参数的Length属性设置为50。尝试将用户名参数的Length属性设置为50。我想您指的是Size属性。我想您指的是Size属性。我将其更改为
myCommand.ExecuteOnQuery()代码>但是仍然只得到名称的第一个字母。但是您是否更改了size属性?Keltex,非常感谢,您的答案解决了问题。我将代码更改为并添加了size属性,它开始返回正确的完整用户名。谢谢你,我把它改成了myCommand.ExecuteNonQuery()代码>但是仍然只得到名称的第一个字母。但是您是否更改了size属性?Keltex,非常感谢,您的答案解决了问题。我将代码更改为并添加了size属性,它开始返回正确的完整用户名。谢谢你,非常感谢,你的回答解决了问题。我将代码更改为并添加了size属性,它开始返回正确的完整用户名。谢谢你,非常感谢,你的回答解决了问题。我将代码更改为并添加了size属性,它开始返回正确的完整用户名。多谢各位
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;
}