【问题标题】:Get the value of particular column via stored procedure in ASP.NET C#通过 ASP.NET C# 中的存储过程获取特定列的值
【发布时间】:2020-06-14 06:23:59
【问题描述】:

我的存储过程有一个选择语句,即: select * from studenttable where studentid=@studentid

学生表还有studentid, name, city

当我在文本框中输入学生 ID 时,它应该获取姓名和城市并分别显示在 LabelName 和 LabelCity 中。

我做了什么:

        bool attempt = dl.OpenSQLConnection();
        SqlCommand cmd = new SqlCommand("VerifyStudent");
        cmd.Connection = dl.myConn;
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@STUDENTID", studentid)
        cmd.ExecuteNonQuery();
        return true;

【问题讨论】:

  • 什么问题?
  • @Always_a_learner 我想检查我的用户名列是否有 'ABC' ,如果是,则导航到 'creategame.aspx' 页面,就像我在第一部分中所做的那样
  • 您想在与 ValidateAdminLogin 相同或不同的 sp 中验证密码吗?
  • @Always_a_learner 在同一个存储过程中验证用户名和密码
  • 旁注:您还应该在第一种情况下使用参数化查询。但请注意"AddWithValues is Evil"。并且密码不应存储为明文,而应仅存储它们的哈希值。

标签: c# asp.net sql-server


【解决方案1】:

我希望,您想检查用户名“ABC”或任何用户名是否存在。如果所需的用户名和密码匹配,此 sp 将返回大于零计数的值。传递 'ABC' 或任何用户名作为用户名参数。

create procedure ValidateAdminLogin
(@UserName varchar(50),@Pasword varchar(50))
as
begin
select count(*) from user_creation where user_name=@UserName and password=@Pasword 
end

【讨论】:

  • 我不允许更改存储过程。更新了问题
  • 那么您在哪里寻找解决方案?我的意思是在数据库端还是在代码中?
  • 如果您被允许创建新的 sp ,那么您可以创建新的 sp ,它将返回经过身份验证的用户应该导航的页面名称..如果这是您的情况,请告诉我
【解决方案2】:

我建议您编写存储过程并像这样编写查询并从 c# 代码中调用它。将 user_name 传递给存储过程。

select count (user_name) from user_creation nolock where user_name= @username

注意:避免在查询中使用select *

【讨论】:

  • 我不允许更改存储过程。更新了问题
  • @MEGHAPOOJARY 但在表中AutoId 的值也可以为零,因此 SP 会给出错误的结果。所以如果你确定它不会有 0 你可以使用这个 SP
猜你喜欢
  • 2014-04-21
  • 1970-01-01
  • 2017-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-10
  • 1970-01-01
  • 2011-03-03
  • 1970-01-01
相关资源
最近更新 更多