首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

小初学者求教超级简单有关问题

2012-12-15 
小菜鸟求教超级简单问题 private void button1_Click(object sender, EventArgs e){string s10string

小菜鸟求教超级简单问题
 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什么的试试。
[其他解释]

引用:
这个要求真是不知道有什么作用。
文本框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();
}

[其他解释]
引用:
s3=Convert.ToString(cmd1.ExecuteScalar()); ---你确定这个能取到用户名么.


得学会调试啊.F9打个断点, 一看就明白
应该读到的是密码
[其他解释]
设置断点,发现s2="密码"s3="密码     "
难道是因为多了很多空格?为什么会多?有办法处理么?
[其他解释]
好吧,明白了
[其他解释]
孩子你还是好好去学习基础知识吧。

cmd1.ExecuteScalar();


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

cmd1.ExecuteScalar()
描述如下:

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

热点排行