output的变量好像也要传进存储过程的吧?你有没有给?存储过程里面声明变量最好给个长度
@StuID nvarchar(12) output
@StuID nvarchar(12) output
解决方案 »
- 如图
- 已经调用Session.Abandon()方法,可是还能取出值来??????
- cookies为什么不能放在page_Load事件中
- 求解DataGrid.Controls[0].Controls为何意?
- asp.net页面传递参数的问题
- 请大家帮忙看一下这段代码?
- 如何刷新treeview,找到以前的状态
- 如何从一个WebPage中获得另一个WebPage中的变量值,请帮忙,我是新手
- 在listbox中输入‘/’或‘\’单击确定按钮 字符都报错(非法字符) 代码如下 请高手解决
- 如何在Page_Load判断Click的是页面中的哪个用户控件?
- vs.net 2002里面的button控件属性里怎么没有onclick属性?
- I FOUND A JOB,BUT THEY TOLD ME THAT I MAST LEAN ASP .BUT I DON'T KNOW ANYTHING ABOUT ASP.HELP ME! TALL ME WHAT ASP ARE!
dcon.Open();
dcmd.Connection = dcon;
dcmd.CommandType = CommandType.StoredProcedure;
dcmd.CommandText = "sp_format_detail";
dcmd.Parameters.Add("@aspecttitle" , SqlDbType.VarChar ,50);
dcmd.Parameters.Add("@subjecttitle" , SqlDbType.VarChar ,50);
dcmd.Parameters.Add("@contentformat" , SqlDbType.VarChar ,500);
dcmd.Parameters["@aspecttitle"].Value = aspecttitle;
dcmd.Parameters["@subjecttitle"].Value = subjecttitle;
dcmd.Parameters["@contentformat"].Direction = ParameterDirection.Output;
dcmd.ExecuteNonQuery();
contentformat =dcmd.Parameters["@contentformat"].Value.ToString();
dcon.Close();
objCmd.Parameters["@StuID"].Direction = ParameterDirection.Output;
sqlConnection.Open();
SqlCommand sqlCommand =new SqlCommand("sp_Staff_Login",sqlConnection);
sqlCommand.CommandType =CommandType.StoredProcedure;
sqlCommand.Parameters.Add("@aaa",aaa);
sqlCommand.Parameters.Add("@bbb",bbb);
SqlParameter ParaResult = sqlCommand.Parameters.Add("@ccc",SqlDbType.Int);
ParaResult.Direction = ParameterDirection.Output; sqlCommand.Prepare();
sqlCommand.ExecuteNonQuery();
Result =(int)sqlCommand.Parameters["@ccc"].Value;
是不是漏了direction?
sqlCommand.Parameters.Add("@bbb",bbb);
SqlParameter ParaResult = sqlCommand.Parameters.Add("@ccc",SqlDbType.Int);
ParaResult.Direction = ParameterDirection.Output;”
is ok怎么没有帖主反应
private void btnLogin_Click(object sender, System.EventArgs e)
{
SqlCommand objCmd = new SqlCommand("LoginID_PWD",this.sqlConnection);
objCmd.CommandType = CommandType.StoredProcedure;
SqlParameter objParam = objCmd.Parameters.Add("@UserName",SqlDbType.VarChar,20);
objParam.Direction = ParameterDirection.Input;
objParam.Value = TBoxUsername.Text; objParam = objCmd.Parameters.Add("@UserPWD",SqlDbType.VarChar,20);
objParam.Direction = ParameterDirection.Input;
objParam.Value = TBoxPassword.Text; objParam = objCmd.Parameters.Add("@StuID",SqlDbType.NVarChar,12);
objParam.Direction = ParameterDirection.Output; string stu_id = "";
try
{
objCmd.Connection.Open();
objCmd.ExecuteNonQuery();
stu_id = objCmd.Parameters["@StuID"].Value.ToString();
objCmd.Connection.Close();
}
catch( SqlException ex)
{
LblInfo.Text = ex.Message;
}
if( stu_id == "" ) Mess.Text = "none";
else Mess.Text = stu_id;
}
我不用存储过程都通过了,但是用了存储过程就是通不过?
是不是连不到数据库?
2.代码如下: SqlCommand objCmd = new SqlCommand("LoginID_PWD",this.sqlConnection);
objCmd.CommandType = CommandType.StoredProcedure;
objCmd.Parameters.Add("@UserName",SqlDbType.VarChar,20) =TBoxUsername.Text;
objCmd.Parameters.Add("@UserPWD",SqlDbType.VarChar,20).Value = TBoxPassword.Text;
objCmd.Parameters.Add("@StuID",SqlDbType.NVarChar,12).Direction = ParameterDirection.Output;
string stu_id = "";
try
{
objCmd.Connection.Open();
objCmd.ExecuteNonQuery();
stu_id = objCmd.Parameters["@StuID"].Value.ToString();
objCmd.Connection.Close();
}
catch( SqlException ex)
{
LblInfo.Text = ex.Message;
}
if( stu_id == "" ) Mess.Text = "none";
else Mess.Text = stu_id;
再贴一次:
SqlCommand objCmd = new SqlCommand("LoginID_PWD",this.sqlConnection);
objCmd.CommandType = CommandType.StoredProcedure;
objCmd.Parameters.Add("@UserName",SqlDbType.VarChar,20) =TBoxUsername.Text;
objCmd.Parameters.Add("@UserPWD",SqlDbType.VarChar,20).Value = TBoxPassword.Text;
objCmd.Parameters.Add("@StuID",SqlDbType.NVarChar,12).Direction = ParameterDirection.Output;
string stu_id = "";
try
{
objCmd.Connection.Open();
objCmd.ExecuteNonQuery();
stu_id = objCmd.Parameters["@StuID"].Value.ToString();
objCmd.Connection.Close();
}
catch( SqlException ex)
{
LblInfo.Text = ex.Message;
}
if( stu_id == "" ) Mess.Text = "none";
else Mess.Text = stu_id;
存储过程中的NVarChar和VarChar变量都要指定长度的,
如果不指定长度,默认长度是1,而且也不会报错的。
@UserName varchar(20),
@UserPWD varchar(20),
@StuID nvarchar(12) output
AS
SELECT @StuID = stu_id
FROM student
WHERE username = @UserName AND password = @UserPWD
在存储过程中,是否应该如上面所写,比如varchar(20)这样修改?
右键点编辑,编辑完按F5就自动检查语法并保存。
或者右键点打开就可以直接指定参数运行了。其实在.net里面也可以直接调试的,差不多。
@UserName varchar(20),
@UserPWD varchar(20)
AS
SELECT stu_id
FROM student
WHERE username = @UserName AND password = @UserPWD
这样写存储过程,这样执行
myConnection.Open();
int retVal = Convert.ToInt32(myCommand.ExecuteScalar());
myConnection.Close();
return retVal;
不就很方便吗?为什么要写多一个参数啊?