C# 如何从存储过程中获取某些选定值的值
我刚开始学习ASP.Net,我只懂PHP,这意味着我有点固执。我需要真实的例子 这是我的问题,我在一个名为C# 如何从存储过程中获取某些选定值的值,c#,asp.net,sql-server,stored-procedures,C#,Asp.net,Sql Server,Stored Procedures,我刚开始学习ASP.Net,我只懂PHP,这意味着我有点固执。我需要真实的例子 这是我的问题,我在一个名为Class1的类库中得到了这个类,它连接到数据库并要求验证用户登录 public string userlogin(string loginuser,string loginpass) { string type = null; myCon.Open(); SqlCommand logincheck = new SqlCommand("
Class1
的类库中得到了这个类,它连接到数据库并要求验证用户登录
public string userlogin(string loginuser,string loginpass)
{
string type = null;
myCon.Open();
SqlCommand logincheck = new SqlCommand("CheckID", myCon);
logincheck.CommandType = CommandType.StoredProcedure;
logincheck.Parameters.Add("@userid", SqlDbType.NVarChar).Value = loginuser;
logincheck.Parameters.Add("@password", SqlDbType.NVarChar).Value = loginpass;
SqlDataReader dr;
dr = logincheck.ExecuteReader();
while (dr.Read())
{
type = //here i want to get the value of type in my database
break;
}
myCon.Close();
return type;
}
这是我的存储过程
ALTER PROCEDURE dbo.logincheck
@userid nchar(10),
@password nchar(20)
AS
Select * from users Where userid = @userid and password = @password
RETURN
我需要一组示例。假设“UserType”是您要查找的列(无法判断,因为您使用的是Select*),则该行将是
type = dr["UserType"] as string
假设“UserType”是您要查找的列(因为您使用的是Select*,所以无法判断),则该行将是
type = dr["UserType"] as string
在不知道用户表是如何构造的情况下,以下是一个猜测:
while (dr.Read()) {
...
}
应改为:
if (dr.Read()) {
type = dr["type"].ToString();
}
一些建议
和子句。这将为你以后省去很多痛苦。参见:示例。以及原因提示:如果现在的代码已发布到生产环境中,则很有可能会在不同的地方出现与数据库相关的随机异常。所以这很重要
类型
。类型是系统命名空间中的一个类,读取方式有点混乱。可能是accountType、loginType、userType或类似的东西。您当然可以将其保留为类型
;只有跟随你的人会质疑它select
语句以实际命名要返回的列。就目前而言,它是易碎的。见:if
语句而不是while
,因为您实际上只需要第一行在不知道用户表是如何构造的情况下,以下是一个猜测:
while (dr.Read()) {
...
}
应改为:
if (dr.Read()) {
type = dr["type"].ToString();
}
一些建议
和子句。这将为你以后省去很多痛苦。参见:示例。以及原因提示:如果现在的代码已发布到生产环境中,则很有可能会在不同的地方出现与数据库相关的随机异常。所以这很重要
类型
。类型是系统命名空间中的一个类,读取方式有点混乱。可能是accountType、loginType、userType或类似的东西。您当然可以将其保留为类型
;只有跟随你的人会质疑它select
语句以实际命名要返回的列。就目前而言,它是易碎的。见:if
语句而不是while
,因为您实际上只需要第一行