首页 新闻 搜索 专区 学院

如何用c#写检测用户输入的信息是否在数据表中有记录?

0
悬赏园豆:10 [待解决问题]

    public SqlConnection Connection()    //连接并返回连接对象
    {
     
         SqlConnection conn = new SqlConnection(" Data Source=localhost;Initial Catalog=db_NetBar;User ID=sa;Password=123456");
         return conn;
           
    }
        public SqlCommand Command(string sql, SqlConnection conn)    //返回一个SqlCommand对象
        {

            SqlCommand cmd = new SqlCommand(sql,conn);
            return cmd;

        }

        public bool HasUser(string sql)   //判断输入的用户信息是否存在
        {
            SqlConnection conn = this.Connection();
            conn.Open();
            SqlCommand cmd;
            cmd = this.Command(sql, conn);
           
            if (cmd.ExecuteNonQuery() > 0)
            {
                return true;
            }
            else
            {
                MessageBox.Show("输入的用户名或密码不正确,请从新输入!");
                return false;
            }
            conn.Close();
          
        }

        private void btn_Denglu_Click(object sender, EventArgs e)
        {
           
           
            if ((txtb_UserID.Text == "") || (txtb_UserPwd.Text == ""))
            {
                MessageBox.Show("用户ID和用户密码不能为空");
            }
            else
            {
                string ID = txtb_UserID.Text.ToString();
                string Pwd = txtb_UserPwd.Text.ToString();
               

                if (cbo_select.Text == "超级管理员")
                {
                    string sql = "select * from Super_Administor where Sup_Adm_ID="+ID +" and Sup_Adm_Pwd="+Pwd;
                    if (this.HasUser(sql))
                    {
                        Sup_AdmLogin newFrm1 = new Sup_AdmLogin();
                        newFrm1.Show();
                    }
                }
                if (cbo_select.Text == "管理员")
                {
                    string sql = "select * from Administor where Adm_ID="+ID+" and Adm_Pwd="+Pwd;
                    if (this.HasUser(sql))
                    {
                        AdministorLogin newFrm2 = new AdministorLogin();
                        newFrm2.Show();
                    }
                }
                if ((cbo_select.Text == "普通用户") || (cbo_select.Text == "会员用户") || (cbo_select.Text == "VIP用户"))
                {
                    string sql = "Select * from Users where Users_ID='@Users_ID' and Users_Pwd='@Users_Pwd'";
                    if (this.HasUser(sql))
                    {
                        UserLogin newFrm3 = new UserLogin();
                        newFrm3.Show();
                    }
                }
            }
          
        }

        private void btn_Exit_Click(object sender, EventArgs e)
        {
            this.Close();
        }

我是freshman

       上面的代码有问题,访问不了数据表中的数据,就高手指导!

C#
华强国邦的主页 华强国邦 | 初学一级 | 园豆:192
提问于:2012-09-17 16:54
< >
分享
所有回答(6)
0

把 sql输出来检查一下

jason2013 | 园豆:1998 (小虾三级) | 2012-09-17 17:32
0

打个断点。把执行的SQL,在查询分析器中执行下试试

你应该查数量啊

select count(0) from table

 应该使用ExecuteScalar

哇~怪兽 | 园豆:603 (小虾三级) | 2012-09-17 17:33

是的,select查询用ExecuteNonQuery 检测不到什么,很多时候返回-1,要不就是:

1. select 出来,判断ds.rows.count

2.或者是直接在select 语句里 用select count(*) from Super_Administor where Sup_Adm_ID="+ID +" and Sup_Adm_Pwd="+Pwd

3.或者 是直接取出当前ID的名字到本地,然后与用户类型做匹配,用ExecuteRead()

支持(0) 反对(0) lanqiaoerp | 园豆:200 (初学一级) | 2012-09-17 20:04
0

加断点,单步调试,是个不错的方法

白月光88 | 园豆:202 (菜鸟二级) | 2012-09-17 17:55
0

你的SQL语句是 select,为何却使用 cmd.ExecuteNonQuery() 非查询操作?

KANLEI | 园豆:96 (初学一级) | 2012-09-17 21:59
0

哈哈,这个只能再查询一遍了。

jerry-Tom | 园豆:4077 (老鸟四级) | 2012-09-18 13:58
0

cmd.ExecuteNonQuery() 返回的是受影响的行数    他是执行  insert  delete  update 时候用的

你现在是Select  而且你是判断登录状态 固然要用cmd.ExecuteScalar  他是返回首行首列的值

《遗落的脚步》 | 园豆:202 (菜鸟二级) | 2017-09-28 16:09
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册