过程或函数'AdminLogin'需要参数'@Admin_Username',这是未提供的。 [英] Procedure or function 'AdminLogin' expects parameter '@Admin_Username', which was not supplied.

查看:115
本文介绍了过程或函数'AdminLogin'需要参数'@Admin_Username',这是未提供的。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的商店程序

  USE  [STTKDevelopers] 
GO
/ * *****对象:StoredProcedure [ dbo]。[AdminLogin]脚本日期:06/20/2013 12:12:22 ****** /
SET < span class =code-sdkkeyword> ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER 程序 [dbo]。[AdminLogin]
@ Admin_Username nvarchar 10 ),
@ Admin_Password nvarchar 10
AS
SELECT Admin_Username,Admin_Password
FROM ADMINISTRATOR
WHERE ADMINISTRATOR.Admin_Username LIKE @ Admin_Username AND ADMINISTRATOR.Admin_Password = @ Admin_Password AND Active = ' 是'







这是我的代码

 受保护  void  login_Authenticate( object  sender,AuthenticateEventArgs e)
{

using (HostingEnvironment.Impersonate())
{

string username = loginDetails.UserName;
string password = loginDetails.Password;

string s;
s = WebConfigurationManager.ConnectionStrings [ ConnString]。ConnectionString;
SqlConnection con = new SqlConnection(s);
con.Open();
// string sqlUserName;
// sqlUserName =SELECT Admin_Username,Admin_Password FROM ADMINISTRATOR WHERE Admin_Username ='+ username +'AND Admin_Password ='+ pwd +';
// SqlCommand cmd = new SqlCommand(sqlUserName,con);
SqlCommand cmd = new SqlCommand( AdminLogin,con);
cmd.CommandType = CommandType.StoredProcedure;


string CurrentName;
CurrentName =( string )cmd.ExecuteScalar();

if (CurrentName!= null
{
会话[ UserAuthentication] = username;
Session.Timeout = 1 ;
Response.Redirect( 〜/ Admin / Default.aspx);
}
else
{
会话[ UserAuthentication] = ;
}




}
}



当我调试我得到这个错误程序或功能'AdminLogin'期望参数'@Admin_Username',这是没有提供。

解决方案

< blockquote>是的,这个例外很明显。在 login_Authenticate 函数中,您正在调用相同的存储过程 AdminLogin ,该过程需要参数( @Admin_Username @Admin_Password )未提供。您需要在传递登录功能时传递这两个参数。





试试这段代码:

 SqlCommand cmd =  new  SqlCommand(  AdminLogin,con); 
cmd.CommandType = CommandType.StoredProcedure;
// 添加所需参数
cmd.Parameters.AddWithValue( @ Admin_Username,YourUserName); // 传递用户名
cmd.Parameters.AddWithValue( @Admin_Password,YourPassword); // 传递密码

string CurrentName;
CurrentName =( string )cmd.ExecuteScalar();





- Amit


你需要传递参数



 cmd.Parameters.AddWithValue(  @ Admin_Username,用户名); 
cmd.Parameters.AddWithValue( @ Admin_Password,密码);



以下$


cmd.CommandType = CommandType.StoredProcedure;


在没有@ for parapater的情况下尝试。


here is my store procedure

USE [STTKDevelopers]
GO
/****** Object:  StoredProcedure [dbo].[AdminLogin]    Script Date: 06/20/2013 12:12:22 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[AdminLogin]
@Admin_Username nvarchar(10),
@Admin_Password nvarchar(10)
AS
SELECT Admin_Username, Admin_Password
FROM ADMINISTRATOR
WHERE ADMINISTRATOR.Admin_Username LIKE @Admin_Username AND ADMINISTRATOR.Admin_Password = @Admin_Password AND Active = 'Yes'




Here is my code

protected void login_Authenticate(object sender, AuthenticateEventArgs e)
   {

       using (HostingEnvironment.Impersonate())
       {

           string username = loginDetails.UserName;
           string password = loginDetails.Password;

           string s;
           s = WebConfigurationManager.ConnectionStrings["ConnString"].ConnectionString;
           SqlConnection con = new SqlConnection(s);
           con.Open();
           //string sqlUserName;
           //sqlUserName = "SELECT Admin_Username, Admin_Password FROM ADMINISTRATOR WHERE Admin_Username ='" + username + "' AND Admin_Password ='" + pwd + "'";
          // SqlCommand cmd = new SqlCommand(sqlUserName, con);
           SqlCommand cmd = new SqlCommand("AdminLogin", con);
           cmd.CommandType = CommandType.StoredProcedure;


           string CurrentName;
           CurrentName = (string)cmd.ExecuteScalar();

           if (CurrentName != null)
           {
               Session["UserAuthentication"] = username;
               Session.Timeout = 1;
               Response.Redirect("~/Admin/Default.aspx");
           }
           else
           {
               Session["UserAuthentication"] = "";
           }




       }
   }


when i debug i get this error "Procedure or function 'AdminLogin' expects parameter '@Admin_Username', which was not supplied.
"

解决方案

Yes, this exception is obvious. In login_Authenticate function, you are calling the same stored procedure "AdminLogin" and that procedure expects the parameters(@Admin_Username and @Admin_Password) which is not supplied. You need to pass both parameters as you are passing in Login function.

[Edit 1]
Try this code:

SqlCommand cmd = new SqlCommand("AdminLogin", con);
cmd.CommandType = CommandType.StoredProcedure;
//Adding the required parameters
cmd.Parameters.AddWithValue("@Admin_Username", YourUserName);//Pass username
cmd.Parameters.AddWithValue("@Admin_Password", YourPassword);//pass password

string CurrentName;
CurrentName = (string)cmd.ExecuteScalar();



--Amit


You need to pass parameters as

cmd.Parameters.AddWithValue("@Admin_Username", username );
cmd.Parameters.AddWithValue("@Admin_Password", password);




below the line

cmd.CommandType = CommandType.StoredProcedure;


Try without the @ for paramater.


这篇关于过程或函数'AdminLogin'需要参数'@Admin_Username',这是未提供的。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆