我正在使用vs 2008在asp.net c#中執行項目。我希望在3層體系結構中執行我的項目。我可以將值插入到表使用3tier.But無法登錄到頁面只有註冊是可能的。在運行它顯示錯誤爲「程序或功能'登錄'期望參數'@iusername',這是沒有提供。」使用3層體系結構在asp.net中無法登錄到頁面c#
我的代碼是下面
表示層
protected void submit_Click(object sender, EventArgs e)
{
String xusername = uname.Text;
String xpwd = pwd.Text;
try
{
bool match = oBAL.checking(xusername, xpwd);
if (match == true)
{
Session["Username"] = xusername;
Response.Redirect("page.aspx");
}
else
{
ClientScript.RegisterStartupScript(GetType(), "alert", "alert('Invalid UserName or Password');", true);
}
}
catch (Exception ee)
{
Label1.Text = ee.Message.ToString();
}
finally
{
oBAL = null;
}
}
BusinessLayer給出
public bool checking(string susername, string spwd)
{
ownerDAL oDAL = new ownerDAL();
bool match = false;
DataSet ds = oDAL.Logincheck();
try
{
int noofrows = ds.Tables["Userstable"].Rows.Count;
for (int i = 0; i < noofrows; i++)
{
if ((ds.Tables["Userstable"].Rows[i]["username"].ToString() == susername) && (ds.Tables["Userstable"].Rows[i]["pwd"].ToString() == spwd))
{
match = true;
}
}
return match;
}
catch
{
throw;
}
finally
{
oDAL = null;
}
}
}
數據層
public DataSet Logincheck()
{
SqlConnection con = new SqlConnection(str);
con.Open();
SqlCommand cmd = new SqlCommand("login", con);
cmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da=new SqlDataAdapter(cmd);
DataSet ds=new DataSet();
try
{
da.Fill(ds, "Userstable");
return ds;
}
catch
{
throw;
}
finally
{
cmd.Dispose();
con.Close();
con.Dispose();
}
}
StoredProcedure的
ALTER PROCEDURE dbo.login
(
@iusername varchar(50),
@ipwd varchar(50)
)
AS
BEGIN
SELECT username, pwd
FROM register
WHERE (username = @iusername) AND (pwd = @ipwd)
END
表名:寄存器 字段: 用戶名(的PrimaryKey) PWD
我認爲這是一個簡單的錯誤。但作爲初學者我找不到它。請提出一個好的解決方案。
感謝您的建議。我做了您的建議。但仍顯示錯誤爲「程序或函數'登錄'期望參數'@iusername',它沒有提供。 – user793987
你修改了哪一個 - 更改程序或傳遞參數? – Shebin
我改變了程序。在給出斷點時,它會嘗試使用dll,然後嘗試使用dl.fill(ds,「Userstable」); return ds; }執行da.Fill(ds,「usertable」);然後退出try。不返回 – user793987