小菜鸟求教超级简单问题

songkehaha 2012-12-05 11:25:28
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就显示密码
...全文
155 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
慧眼识狗熊 2012-12-05
  • 打赏
  • 举报
回复
s3=Convert.ToString(cmd1.ExecuteDataView().Table.ToList()[0]);
_小黑_ 2012-12-05
  • 打赏
  • 举报
回复
s3明显返回的是影响的行数啊,你用ExecuteRead()这个方法,之后循环读取,在赋给s3,你好好看看 执行数据库的方法把,例如ExecuteRead(),ExecuteScalar(),ExecuteNoneQuery(),等
qzp000000 2012-12-05
  • 打赏
  • 举报
回复
s3=s3.Trim();
songkehaha 2012-12-05
  • 打赏
  • 举报
回复
引用 1 楼 bdmh 的回复:
你不会调试吗,打个断点,看看程序怎么执行的,你的条件肯定没有得到满足
我菜鸟一只真不会调试
songkehaha 2012-12-05
  • 打赏
  • 举报
回复
引用 2 楼 small21 的回复:
这个要求真是不知道有什么作用。 文本框1 刚开始的时候显示的是用户名,如果输入的密码是错的,那么在文本框1中显示正确的密码。 你可以单步调试测试一下,我估计是 if (s2 == s3) 这里虽然你输入的密码和数据库中相同,但是可能传回来的数据比较时除了问题。用equals什么的试试。
我本来是想如果用户名密码正确就实现某个功能 但是我一开始不确定是不是那段功能代码出错了 所以先设定个简单的功能先试验一下, 还有用equals也不行。 到底哪里出错了啊
慧眼识狗熊 2012-12-05
  • 打赏
  • 举报
回复
这个要求真是不知道有什么作用。 文本框1 刚开始的时候显示的是用户名,如果输入的密码是错的,那么在文本框1中显示正确的密码。 你可以单步调试测试一下,我估计是 if (s2 == s3) 这里虽然你输入的密码和数据库中相同,但是可能传回来的数据比较时除了问题。用equals什么的试试。
bdmh 2012-12-05
  • 打赏
  • 举报
回复
你不会调试吗,打个断点,看看程序怎么执行的,你的条件肯定没有得到满足
XBodhi. 2012-12-05
  • 打赏
  • 举报
回复
孩子你还是好好去学习基础知识吧。

cmd1.ExecuteScalar();

你知道这个方法的作用吗如果不知道你就不要乱用他。

cmd1.ExecuteScalar()
描述如下:

读取出第一条记录的第一列的值,如果无记录则为 DBNULL

songkehaha 2012-12-05
  • 打赏
  • 举报
回复
好吧,明白了
songkehaha 2012-12-05
  • 打赏
  • 举报
回复
设置断点,发现s2="密码"s3="密码 " 难道是因为多了很多空格?为什么会多?有办法处理么?
songkehaha 2012-12-05
  • 打赏
  • 举报
回复
引用 10 楼 yumen3501 的回复:
s3=Convert.ToString(cmd1.ExecuteScalar()); ---你确定这个能取到用户名么. 得学会调试啊.F9打个断点, 一看就明白
应该读到的是密码
Assassin_ 2012-12-05
  • 打赏
  • 举报
回复
s3=Convert.ToString(cmd1.ExecuteScalar()); ---你确定这个能取到用户名么. 得学会调试啊.F9打个断点, 一看就明白
刘_半仙 2012-12-05
  • 打赏
  • 举报
回复
 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();
}
刘_半仙 2012-12-05
  • 打赏
  • 举报
回复
"select 密码 from 用户库 where 用户名= '" + s1 + "'" 为什么 要把密码取出来比对呢。。 写在条件语句里不是更好?

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧