小菜鸟求教超级简单问题
private void button1_Click(object sender, EventArgs e)
{
string s1="0";
string s2 = "0";
string s3 = "0";
s1 = textBox1.Text;
s2 = textBox2.Text;
cmd1 = new SqlCommand("select 密码 from 用户库 where 用户名= '" + s1 + "'", con);
con.Open();
s3=Convert.ToString(cmd1.ExecuteScalar());
con.Close();
if (s2 == s3)
{
textBox2.Text = s1;
}
else
{
textBox1.Text = s3;
}
}
我想实现的功能是如果用户名密码正确,那么文本框2就显示成用户名
如果不正确文本框1就显示密码
结果无论正不正确
都是文本框1就显示密码
[最优解释]
你不会调试吗,打个断点,看看程序怎么执行的,你的条件肯定没有得到满足
[其他解释]
s3=Convert.ToString(cmd1.ExecuteScalar()); ---你确定这个能取到用户名么.
得学会调试啊.F9打个断点, 一看就明白
[其他解释]
这个要求真是不知道有什么作用。
文本框1 刚开始的时候显示的是用户名,如果输入的密码是错的,那么在文本框1中显示正确的密码。
你可以单步调试测试一下,我估计是 if (s2 == s3) 这里虽然你输入的密码和数据库中相同,但是可能传回来的数据比较时除了问题。用equals什么的试试。
[其他解释]
我本来是想如果用户名密码正确就实现某个功能
但是我一开始不确定是不是那段功能代码出错了
所以先设定个简单的功能先试验一下,
还有用equals也不行。
到底哪里出错了啊
[其他解释]
我菜鸟一只真不会调试
[其他解释]
s3=s3.Trim();
[其他解释]
s3明显返回的是影响的行数啊,你用ExecuteRead()这个方法,之后循环读取,在赋给s3,你好好看看
执行数据库的方法把,例如ExecuteRead(),ExecuteScalar(),ExecuteNoneQuery(),等
------其他解决方案--------------------
s3=Convert.ToString(cmd1.ExecuteDataView().Table.ToList()[0]);
[其他解释]
"select 密码 from 用户库 where 用户名= '" + s1 + "'"
为什么 要把密码取出来比对呢。。
写在条件语句里不是更好?
[其他解释]
private void button1_Click(object sender, EventArgs e)
{
OleDbDataReader reader = null;
string s1="0";
string s2 = "0";
s1 = textBox1.Text;
s2 = textBox2.Text;
string sqlmsg;
sqlmsg = "select * from 用户库 where 用户名= " + s1 + "and 密码 =" + s2;
cmd1 = new SqlCommand( sqlmsg, con);
con.Open();
reader = cmd.ExecuteReader();
con.Close();
if (reader.Read())
{
textBox2.Text = s1;
}
else
{
MessageBox.Show("密码不正确");
}
}
如果你要输出 正确密码的话
改语句 为你的那个 "select 密码 from 用户库 where 用户名= '" + s1 + "'"
填充reader
else
{
textbox1.text = reader["密码"].ToString();
}
[其他解释]
应该读到的是密码
[其他解释]
设置断点,发现s2="密码"s3="密码 "
难道是因为多了很多空格?为什么会多?有办法处理么?
[其他解释]
好吧,明白了
[其他解释]
孩子你还是好好去学习基础知识吧。
cmd1.ExecuteScalar();
你知道这个方法的作用吗如果不知道你就不要乱用他。
cmd1.ExecuteScalar()
描述如下:
读取出第一条记录的第一列的值,如果无记录则为 DBNULL