C#编程:SqlParameter paramOut=cmd.Parameters.Add("@RETURN_VALUE","");此句代码解释?
其中"cmd"是command对象的一个实例.关键我就是不清楚Add方法的那两个参数各代表什么?更奇怪的是第二个参数竞然是"",就更让我不理解了!我可以保证,在存储过程和...
其中"cmd"是command对象的一个实例.关键我就是不清楚Add方法的那两个参数各代表什么?更奇怪的是第二个参数竞然是" ",就更让我不理解了!我可以保证,在存储过程和.CS文件中没有关于"@RETURN_VALUE"的定义.
来龙去脉是这样的:
首先看一下存储过程的SQL语句:
CREATE PROCEDURE dbo.CreateUser
(@username varchar(50),
@password varchar(50)
)
AS
if exists
(select id from userinfo where username=@username)
return 1
insert into userinfo(username,password)values(@username,@password)
return 0
GO
再来看一下接收用户所输入注册信息的后台代码:
private void btnRegister_Click(object sender,System.EventArgs e)
{
string connstr="data source =localhost; user id =sa;password=;initial catalog=bookdata";
SqlConnection conn=new SqlConnection(connstr);
SqlCommand cmd=new SqlCommand("CreateUser",conn);
cmd.CommandTye=CommandType.StoreProcedure;
cmd.Parameters.Add("@username",tbUsername.Text);
cmd.Parameters.Add("@password",tbPassword.Text);
SqlParameter paramOut=cmd.Parameters.Add("@RETURN_VALUE"," ");
paramOut.Direction=ParameterDirection.ReturnValue;
try
{
conn.Open();
cmd.ExecuteNonQuery();
if((int)cmd.Parameters["@RETURN_VALUE"].Value==0)
{ Response.Write("<h3 color=red>注册成功!</h3>");}
else
{Response.Write("<h3 color=red>该用户名已注册!</h3>");}
}
catch(SqlException ex)
{
Response.Write("数据访问错误!\n");
Response.Write(ex.Message);
}
finally
{conn.Close();}
}
}
这就是完整的源程序,我想我也说的挺清楚的了吧,那么就请各位大虾指点一下喽!关键我就是不清楚Add方法的那两个参数各代表什么?更奇怪的是第二个参数竞然是" ",就更让我不理解了!在存储过程和.CS文件中有没有关于"@RETURN_VALUE"的定义,您也一目了然了.请指教!
在存储过程和.CS文件中有没有关于"@RETURN_VALUE"的定义,那它是哪来的呢?它是干什么的? 展开
来龙去脉是这样的:
首先看一下存储过程的SQL语句:
CREATE PROCEDURE dbo.CreateUser
(@username varchar(50),
@password varchar(50)
)
AS
if exists
(select id from userinfo where username=@username)
return 1
insert into userinfo(username,password)values(@username,@password)
return 0
GO
再来看一下接收用户所输入注册信息的后台代码:
private void btnRegister_Click(object sender,System.EventArgs e)
{
string connstr="data source =localhost; user id =sa;password=;initial catalog=bookdata";
SqlConnection conn=new SqlConnection(connstr);
SqlCommand cmd=new SqlCommand("CreateUser",conn);
cmd.CommandTye=CommandType.StoreProcedure;
cmd.Parameters.Add("@username",tbUsername.Text);
cmd.Parameters.Add("@password",tbPassword.Text);
SqlParameter paramOut=cmd.Parameters.Add("@RETURN_VALUE"," ");
paramOut.Direction=ParameterDirection.ReturnValue;
try
{
conn.Open();
cmd.ExecuteNonQuery();
if((int)cmd.Parameters["@RETURN_VALUE"].Value==0)
{ Response.Write("<h3 color=red>注册成功!</h3>");}
else
{Response.Write("<h3 color=red>该用户名已注册!</h3>");}
}
catch(SqlException ex)
{
Response.Write("数据访问错误!\n");
Response.Write(ex.Message);
}
finally
{conn.Close();}
}
}
这就是完整的源程序,我想我也说的挺清楚的了吧,那么就请各位大虾指点一下喽!关键我就是不清楚Add方法的那两个参数各代表什么?更奇怪的是第二个参数竞然是" ",就更让我不理解了!在存储过程和.CS文件中有没有关于"@RETURN_VALUE"的定义,您也一目了然了.请指教!
在存储过程和.CS文件中有没有关于"@RETURN_VALUE"的定义,那它是哪来的呢?它是干什么的? 展开
展开全部
SqlParameter paramOut=cmd.Parameters.Add("@RETURN_VALUE"," ");
paramOut.Direction=ParameterDirection.ReturnValue; 这个指明了 有输出参数
cmd.ExecuteNonQuery();
if((int)cmd.Parameters["@RETURN_VALUE"].Value==0)
判断 输出的参数是不是0
这个 @RETURN_VALUE 是sqlserver 在执行存储过程时自动生成的返回值参数
如果等于0 则代表 这个存储过程执行过程中没有异常并执行成功
你在sql server management studio 里执行一个存储过程的时候i你就会看见 下面的输出框里有一个 RETURN_VALUE 为 0 (如果执行成功的话)
paramOut.Direction=ParameterDirection.ReturnValue; 这个指明了 有输出参数
cmd.ExecuteNonQuery();
if((int)cmd.Parameters["@RETURN_VALUE"].Value==0)
判断 输出的参数是不是0
这个 @RETURN_VALUE 是sqlserver 在执行存储过程时自动生成的返回值参数
如果等于0 则代表 这个存储过程执行过程中没有异常并执行成功
你在sql server management studio 里执行一个存储过程的时候i你就会看见 下面的输出框里有一个 RETURN_VALUE 为 0 (如果执行成功的话)
展开全部
这个存储过程需要两个输入参数(in),一个输出参数 (out)
类似与
str="Select count(*) from [table1] where username = @username and password =@password"
一下两句就是给这两个参数赋值
cmd.Parameters.Add("@username",tbUsername.Text);
cmd.Parameters.Add("@password",tbPassword.Text);
最后一个参数是类型的
//补充
这三个参数都是在存储过程里定义的,所以你可以打开CreateUser这个存储过程看看源代码就会发现这三个参数
类似与
str="Select count(*) from [table1] where username = @username and password =@password"
一下两句就是给这两个参数赋值
cmd.Parameters.Add("@username",tbUsername.Text);
cmd.Parameters.Add("@password",tbPassword.Text);
最后一个参数是类型的
//补充
这三个参数都是在存储过程里定义的,所以你可以打开CreateUser这个存储过程看看源代码就会发现这三个参数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在存储过程里你看不见是因为许多存储过程执行后都有一个默认的返回值,就像c语言中好多系统函数都有一个返回值一样,只不过c里面成功用1表示,失败0;存储过程0表示成功,1表示失败
代码里没有定义就有这个@RETURN_VALUE是因为他也是默认存在,不需要你定义,它正好对应接收存储过程的返回值
这个你知道这么用就行了,没必要深究
SqlParameterCollection.Add 方法 (String, Object)
注意:此 API 现在已过时。
一般都写成
cmd.Parameters.Add("@RETURN_VALUE",SqlDbType.Int);
代码里没有定义就有这个@RETURN_VALUE是因为他也是默认存在,不需要你定义,它正好对应接收存储过程的返回值
这个你知道这么用就行了,没必要深究
SqlParameterCollection.Add 方法 (String, Object)
注意:此 API 现在已过时。
一般都写成
cmd.Parameters.Add("@RETURN_VALUE",SqlDbType.Int);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
@RETURN_VALUE作为数据库存储过程返回的参数
整个存储过程是这样的意思,ADD是你传递给存储过程的参数,即传递了两个参数,一个用户名一个是密码,然后执行存储过程,如果已经存在用户所输入的用户名则返回return_value=1,后台程序则提示该用户已经注册了,如果在数据库中不存在用户所输入的用户名,则将用户输入的用户名和密码插入到数据库中,并返回return_value=0后台程序验证到其值为0时则提示注册成功。至于你说的RETUREN_VALUE没有声明,那是因为你还不了解存储过程是什么个意思,注意看这句cmd.Parameters["@RETURN_VALUE"].Value
还有什么问题??
整个存储过程是这样的意思,ADD是你传递给存储过程的参数,即传递了两个参数,一个用户名一个是密码,然后执行存储过程,如果已经存在用户所输入的用户名则返回return_value=1,后台程序则提示该用户已经注册了,如果在数据库中不存在用户所输入的用户名,则将用户输入的用户名和密码插入到数据库中,并返回return_value=0后台程序验证到其值为0时则提示注册成功。至于你说的RETUREN_VALUE没有声明,那是因为你还不了解存储过程是什么个意思,注意看这句cmd.Parameters["@RETURN_VALUE"].Value
还有什么问题??
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询