C# 沿着查询结果进行迭代(只读),但如果关闭连接或将其用于其他datareader或dataAdapter,则将丢失当前结果。要使用数据读取器,您需要一个活动连接。您可以使用dataAdapter并用结果填充DataTable。您都不能使用具有相同连接的嵌套数
C# 沿着查询结果进行迭代(只读),但如果关闭连接或将其用于其他datareader或dataAdapter,则将丢失当前结果。要使用数据读取器,您需要一个活动连接。您可以使用dataAdapter并用结果填充DataTable。您都不能使用具有相同连接的嵌套数,c#,mysql,mysqldatareader,C#,Mysql,Mysqldatareader,沿着查询结果进行迭代(只读),但如果关闭连接或将其用于其他datareader或dataAdapter,则将丢失当前结果。要使用数据读取器,您需要一个活动连接。您可以使用dataAdapter并用结果填充DataTable。您都不能使用具有相同连接的嵌套数据读取器。@maralfol我明白了,谢谢:)解决了我的问题。我给它一个+1的答案我想这再次说明了我之前的评论。如果要直接使用ADO,请直接使用ADO。如果您想要一个围绕ADO的包装器,请使用已经为您学习和整理过的许多现有包装器中的一个。
沿着查询结果进行迭代(只读),但如果关闭连接或将其用于其他datareader或dataAdapter,则将丢失当前结果。要使用数据读取器,您需要一个活动连接。您可以使用dataAdapter并用结果填充DataTable。您都不能使用具有相同连接的嵌套数据读取器。@maralfol我明白了,谢谢:)解决了我的问题。我给它一个+1的答案我想这再次说明了我之前的评论。如果要直接使用ADO,请直接使用ADO。如果您想要一个围绕ADO的包装器,请使用已经为您学习和整理过的许多现有包装器中的一个。
protected void btnLogin_Click(object sender, EventArgs e)
{
Page.Validate("Login");
if (!IsValid)
{
return;
}
if (checkLogin())
{
Response.Redirect("Default.aspx");
}
else
{
lblErr.Text = "Invalid login attempt";
}
}
protected Boolean checkLogin()
{
MySql db = new MySql();
string sql = "select userid, firstname, lastname, ifnull(lastlogin, '') from users where email = @email and pass = @pass";
List<MySqlParameter> args = new List<MySqlParameter>();
args.Add(new MySqlParameter() { ParameterName = "@email", MySqlDbType = MySqlDbType.VarChar, Size = 100, Value = txtEmail.Text });
args.Add(new MySqlParameter() { ParameterName = "@pass", MySqlDbType = MySqlDbType.VarChar, Size = 20, Value = txtPass.Text });
MySqlDataReader dr = db.getReader(sql, args);
if (dr.HasRows)
{
dr.Read();
Session["userid"] = dr.GetInt32("userid");
Session["firstname"] = dr.GetString("firstname");
Session["lastname"] = dr.GetString("lastname");
Session["lastlogin"] = dr.GetDateTime("lastlogin");
dr.Close();
return true;
}
else
{
return false;
}
}
public class MySql
{
static string connStr = "data source=localhost; initial catalog=mail; user id=root; password=Ly@12157114;";
MySqlConnection conn = new MySqlConnection(connStr);
public MySqlDataReader getReader(string sql, List<MySqlParameter> args)
{
if (args.Count == 0)
{
return getReader(sql);
}
else
{
return getReader(sql, args.ToArray());
}
}
public MySqlDataReader getReader(string sql, MySqlParameter[] args = null)
{
MySqlCommand cmd = new MySqlCommand(sql, conn);
if (args != null)
{
cmd.Parameters.AddRange(args);
}
conn.Open();
MySqlDataReader dr = cmd.ExecuteReader();
conn.Close();
return dr;
}
}