嘿,当我尝试向我的 mySql 查询添加参数时,我正在尝试输出到标签如果我使用此sql语句"字符串sql ="从学校管理员DB.login中选择login_Type",则工作正常,其中密码='管理员'和电子邮件='admin'";"但是当输入变量时,我没有得到任何输出
string password = Txtpassword.ToString();
string email = Txtpassword.ToString();
string sql = "SELECT login_Type FROM schooladmindb.login WHERE Password = @password AND Email = @email";
MySqlConnection con = new MySqlConnection("");
con.Open();
MySqlCommand cmd = new MySqlCommand(sql, con);
cmd.Parameters.AddWithValue("@password", password.);
cmd.Parameters.AddWithValue("@email", email);
MySqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
string type = reader.GetString(1);
Lbltest.Text = type;
//data2txtz.Text = reader.GetString("id");
//datatxt.Text = reader.GetString("userId");
}
当我在两个文本框中输入 admin 时,我没有得到任何输出,我不确定从这里开始
您要查找结果中的第二列:
reader.GetString(1)
但只选择一列:
SELECT login_Type FROM schooladmindb.login
改为获取第一列:
reader.GetString(0)
<小时 />另外,什么是Txtpassword
? 您正在调用.ToString()
,但它是否像TextBox
一样输入? 根据显示的代码,我无法确定这一点,但您可能在这里使用了错误的值。 您必须调试才能找到答案。
但重点是,如果Txtpassword
是TextBox
或其他类似控件,则可能需要其.Text
属性。 .ToString()
只会给你类的名称。
此外,您是否注意到您对密码和电子邮件使用相同的用户输入? 这可能是您的错字。 同样,我不能确定。 但值得检查一下。
<小时 />你在这里还有一个错别字:
cmd.Parameters.AddWithValue("@password", password.);
// right here ---^
这会阻止您的代码编译。 所以。。。您可能需要查看编译器为您提供的错误消息。
<小时 />旁注,但很重要:以纯文本形式存储用户密码是一个众所周知的坏主意。 这对用户来说是非常不负责任的。 用户密码应用单向哈希遮盖,并且永远不应以其原始形式读取。 甚至不是由您作为系统所有者。