gpt4 book ai didi

c# - 我的 SqlDataReader 没有行?

转载 作者:太空宇宙 更新时间:2023-11-03 22:46:00 24 4
gpt4 key购买 nike

当我调试时,我的控制台显示我的阅读器没有行。您可以在下面找到代码。

public ActionResult Login(LoginViewModel loginViewModel)
{
bool isSucces = false;


if (ModelState.IsValid)
{
SqlConnection conn = new SqlConnection(@"Data Source=DESKTOP-9DG53HK\TOMSQL;Initial Catalog=Webshop;Integrated Security=True");
conn.Open();

string username = loginViewModel._username;
string password = HashPassword(loginViewModel._username, loginViewModel._password);


SqlCommand cmd = new SqlCommand("SELECT * FROM [User] WHERE Username = @Username and Password = @Password;", conn);
cmd.Parameters.AddWithValue("@Username", username);
cmd.Parameters.AddWithValue("@Password", password);


SqlDataReader reader = cmd.ExecuteReader();

if (reader.HasRows)
{
while (reader.Read())
{
int Role = Convert.ToInt32(reader["Role"]);
}
}
else
{
Console.WriteLine("No rows found.");
}

SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);

bool loginSuccessful = ((ds.Tables.Count > 0) && (ds.Tables[0].Rows.Count > 0));


if (loginSuccessful)
{
//return View(new LoginViewModel(isSucces, Role));
}
else
{
Console.WriteLine("Invalid username or password");
}

}
return View();
}

程序完全跳过了 while 循环。我一直在寻找一段时间,但找不到答案,也许你们知道出了什么问题。

最佳答案

首先,当你用过SqlDataAdapter为什么还需要SqlDataReader?我推荐 SqlDataAdapter,因为它还管理 Connection 和比 SqlDataReader 更好的方法。 SqlDataReader 有许多必须跟进的事情,它们是 Reader.Close()Reader.Dispose() Connection.Open()Connection.Close()Reader 在非异步时很可能在多次点击时失败。

您可以像这样简单地执行您的代码:

SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
int Role = 0;
bool loginSuccessful = false;
if(ds != null && ds.tables[0].Rows.Count > 0)
{
Role = Convert.ToInt32(ds.tables[0].Rows[0]["Role"]);
loginSuccessful = true;
}
else
{
// No rows found
}

其次(回答您的实际问题): 必须与传递的参数不匹配,因此 0 行。

关于c# - 我的 SqlDataReader 没有行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49897219/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com