none
SQL语句 RRS feed

  • 问题

  •  try
                {
                    string strSql = "select 用户名,密码 from [VIP].[dbo].[管理员用户表]"
                        + "where @用户名=textBox2 .Text .Trim ()" + "and @密码 = textBox1 .Text .Trim ()";
                    cmd .Connection =con ;
                    cmd .CommandText =strSql ;
                 

                    if (strSql = true)            //此行
                    {
                        Form2 form2 = new Form2();
                        form2.ShowDialog();
                    }
                }
                catch (SqlException ex)
                {
                    MessageBox.Show(ex .Message );
                }

    上面是登陆界面的用户身份验证,使用sql语句查询数据库中的 用户名和密码,如果与文本框中输入的相同那么进入下一个窗体,否则报错。我请问大家我的SQL有错误吗?进入下一个窗体是使用if语句吗,如果是该怎么写???

    2009年6月22日 11:56

答案

  • try
    {
        string connectionString = "你的连接字符串";
        string commandText = "SELECT COUNT(*) FROM [管理员用户表] WHERE [用户名]=@UserName and [密码]=@Password";
    
        using (SqlConnection conn = new SqlConnection(connectionString))
        {
            SqlCommand comm = new SqlCommand(commandText, conn);
            comm.Parameters.AddRange(new SqlParameter[] { 
                 new SqlParameter("@UserName", textBox2.Text.Trim()),
                 new SqlParameter("@Password", textBox1.Text.Trim())
             });
    
            conn.Open();
    
            if ((int)comm.ExecuteScalar() == 0)
            {
                MessageBox.Show("用户名或密码不正确");
            }
            else
            {
                MessageBox.Show("正确");
            }
        }
    }
    catch (SqlException ex)
    {
        MessageBox.Show(ex.Message);
    }

    知识改变命运,奋斗成就人生!
    • 已标记为答案 茉莉花 2009年6月23日 8:49
    2009年6月22日 16:16
    版主

全部回复

  • 现在我做了个用户登录界面,其中有 用户名和密码 现在问题是如何把输入的数据和数据库中的对比。我试了好几次都失败了。尽量说的详细点。多谢  我新手
    2009年6月22日 0:34
  • select count(*) from user where username = @username and password = @password
    邹俊才
    2009年6月22日 1:39
    版主
  • 一般数据存的密码都是加密后的密码,你可以这样做,在登陆控件中将密码加密,然后从数据库读取该用户的密码,判断两个密码是否相等

    知识改变命运,奋斗成就人生!
    2009年6月22日 1:46
    版主
  • try
                {
                    string strSql = "select 用户名,密码 from [VIP].[dbo].[管理员用户表]"
                        + "where 用户名=textBox2 .Text .Trim ()" + "and 密码 = textBox1 .Text .Trim ()";
                    cmd .Connection =con ;
                    cmd .CommandText =strSql ;
                 
    
                    if (strSql = true)            //此行
                    {
                        Form2 form2 = new Form2();
                        form2.ShowDialog();
                    }
                }
                catch (SqlException ex)
                {
                    MessageBox.Show(ex .Message );
                }
    
    
    你好你如果不是想用参数化查询就不要在那个字段前边加@
    同时你可以用cmd.ExecuteNonQuery()是否大于0来判断是否有记录
    你这里的语句  if (strSql = true)   就相当于是把一个bool类型的值赋给字符串strSql
    可以改成if(cmd.ExecuteNonQuery()>0)
    {
    

    Denn ich gehor nur dir!坚持不懈!http://hi.baidu.com/1987raymond
    2009年6月22日 13:17
    版主
  • try
    {
        string connectionString = "你的连接字符串";
        string commandText = "SELECT COUNT(*) FROM [管理员用户表] WHERE [用户名]=@UserName and [密码]=@Password";
    
        using (SqlConnection conn = new SqlConnection(connectionString))
        {
            SqlCommand comm = new SqlCommand(commandText, conn);
            comm.Parameters.AddRange(new SqlParameter[] { 
                 new SqlParameter("@UserName", textBox2.Text.Trim()),
                 new SqlParameter("@Password", textBox1.Text.Trim())
             });
    
            conn.Open();
    
            if ((int)comm.ExecuteScalar() == 0)
            {
                MessageBox.Show("用户名或密码不正确");
            }
            else
            {
                MessageBox.Show("正确");
            }
        }
    }
    catch (SqlException ex)
    {
        MessageBox.Show(ex.Message);
    }

    知识改变命运,奋斗成就人生!
    • 已标记为答案 茉莉花 2009年6月23日 8:49
    2009年6月22日 16:16
    版主
  • 大哥能加你qq吗 我的594313472 以后少不了要麻烦你。
    2009年6月23日 7:35