我用一个web form做为用户登录的界面,当用户输入ID和密码时,就调用SQL Server的一个stored procedure来验证Customer表中是否存在这个用户ID和密码。如果存在的话,就从这个用户登陆的web form跳转到第二个web form.我现在的问题是当我点击了button按钮以后,web窗体不会跳转到第二个web窗体,请大家帮我看看应该怎么改我的代码如下:public partial class MainPage : System.Web.UI.Page
{
private SqlConnection conn = new SqlConnection("Integrated Security= true;Initial Catalog=RoadsideMart;Data Source=huyufeng;"); protected void Page_Load(object sender, EventArgs e)
{
if (conn.State == ConnectionState.Closed)
conn.Open();
}
protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
{
if (conn.State == ConnectionState.Closed)
conn.Open(); string sqlStr = "exec sp_validateUser "; sqlStr += Username.Text + ", \'" + Password.Text + "\'"; SqlCommand cmd = new SqlCommand(sqlStr, conn); int rtValue = (int)cmd.ExecuteScalar(); if (rtValue == 1)
{
Server.Transfer("Default2.aspx");
}
}
}
对应的stored procedure叫sp_validateUser,代码如下:
Create procedure sp_validateUser@userId int,
@inputPassword varchar(6)ASbegin
declare @userIdChar varchar(30) set @userIdChar = @userId declare @rtValue int if( @userIdChar = '')
set @rtValue = 0
else
begin
select @rtValue = 1 from Customer where ID = @userIdChar AND password = @inputPassword
if (@rtValue <> 1)
set @rtValue = 0
end
return @rtValue
end我估计问题应为我没写button按钮的click事件,但是我不知道该怎么改好,请大家帮我看看吧,谢谢了。
{
private SqlConnection conn = new SqlConnection("Integrated Security= true;Initial Catalog=RoadsideMart;Data Source=huyufeng;"); protected void Page_Load(object sender, EventArgs e)
{
if (conn.State == ConnectionState.Closed)
conn.Open();
}
protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
{
if (conn.State == ConnectionState.Closed)
conn.Open(); string sqlStr = "exec sp_validateUser "; sqlStr += Username.Text + ", \'" + Password.Text + "\'"; SqlCommand cmd = new SqlCommand(sqlStr, conn); int rtValue = (int)cmd.ExecuteScalar(); if (rtValue == 1)
{
Server.Transfer("Default2.aspx");
}
}
}
对应的stored procedure叫sp_validateUser,代码如下:
Create procedure sp_validateUser@userId int,
@inputPassword varchar(6)ASbegin
declare @userIdChar varchar(30) set @userIdChar = @userId declare @rtValue int if( @userIdChar = '')
set @rtValue = 0
else
begin
select @rtValue = 1 from Customer where ID = @userIdChar AND password = @inputPassword
if (@rtValue <> 1)
set @rtValue = 0
end
return @rtValue
end我估计问题应为我没写button按钮的click事件,但是我不知道该怎么改好,请大家帮我看看吧,谢谢了。
salesCMD.CommandType = CommandType.StoredProcedure;SqlParameter myParm = salesCMD.Parameters.Add("@CategoryName", SqlDbType.NVarChar, 15);
myParm.Value = "Beverages";nwindConn.Open();SqlDataReader myReader = salesCMD.ExecuteReader();
另外设置个断点跟踪一下就什么都知道了。
How to: Enable SQL Server Debugging
http://msdn.microsoft.com/en-us/library/09x4a6at(VS.80).aspx
--且不说别的,你的程序里面调用存储过程用的方法是返回首行首列,那么你的存储过程就不能像现在这样写:
Create procedure sp_validateUser@userId int,
@inputPassword varchar(6)ASbegin
declare @userIdChar varchar(30) set @userIdChar = @userId declare @rtValue int if( @userIdChar = '')
set @rtValue = 0
else
begin
select @rtValue = 1 from Customer where ID = @userIdChar AND password = @inputPassword
if (@rtValue <> 1)
set @rtValue = 0
end
select @rtValue --这里应该改成这样``
end
{
private SqlConnection conn = new SqlConnection("Integrated Security= true;Initial Catalog=RoadsideMart;Data Source=huyufeng;"); protected void Page_Load(object sender, EventArgs e)
{
if (conn.State == ConnectionState.Closed)
conn.Open();
}
protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
{
if (conn.State == ConnectionState.Closed)
conn.Open(); string sqlStr ="";
sqlStr = "select count(*)from a where Username ='"+Username.Text + "' and Password= '" + Password.Text + "'"; SqlCommand cmd = new SqlCommand(sqlStr, conn); int rtValue = (int)cmd.ExecuteScalar(); if (rtValue == 1)
{
Server.Transfer("Default2.aspx");
}
}
}
{
if (conn.State == ConnectionState.Closed)
conn.Open(); string sqlStr ="";
sqlStr = "select count(*)from a where Username ='"+Username.Text + "' and Password= '" + Password.Text + "'"; SqlCommand cmd = new SqlCommand(sqlStr, conn); int rtValue = (int)cmd.ExecuteScalar(); if (rtValue == 1)
{
Server.Transfer("Default2.aspx");
}
}
}
试试吧...