问题描述
LinkDataBase.Open();stringusername=this.textBox1.Text;stringpassword=this.textBox2.Text;DataTabledt=LinkDataBase.GetUserInfo();stringid=dt.Rows[0][0].ToString();intcount=dt.Rows.Count;stringselectsql="select*from用户权限wheresysuser='"+username+"'andpassword='"+password+"'";SqlCommandcmd=newSqlCommand(selectsql,LinkDataBase.Connection);cmd.CommandType=CommandType.Text;SqlDataReadersdr;sdr=cmd.ExecuteReader();if(sdr.Read()){boolenabled2=Convert.ToBoolean(dt.Rows[0]["save_1"]);//开始出现列save_1不属于表boolenabled3=Convert.ToBoolean(dt.Rows[0]["calculate_1"]);boolenabled4=Convert.ToBoolean(dt.Rows[0]["input_1"]);FrmMainfrmMain=newFrmMain(enabled2,enabled3,enabled4);sdr.Close();FrmMain.isRunMain=true;frmMain.Show();this.Close();}else{if(MessageBox.Show("输入用户密码有误,是否重新登录","输入有误",MessageBoxButtons.OKCancel,MessageBoxIcon.Question)==DialogResult.OK){this.textBox1.Clear();this.textBox2.Clear();}else{Application.Exit();}}我的权限表如下[IDsysuserpasswordsave_1calculate_1input_11001abc1112002abc1103003abc1004004abc000
解决方案
解决方案二:
菜鸟代码写的比较乱麻烦各位大神耐心看下
解决方案三:
第三行是获得用户权限表
解决方案四:
//这名句GetUserInfo()函数中返回的是什么?DataTabledt=LinkDataBase.GetUserInfo();//你下面写数据库访问的并没有用datatable去接收。stringselectsql="select*from用户权限wheresysuser='"+username+"'andpassword='"+password+"'";
解决方案五:
boolenabled2=sdr.GetBoolean(3);.....你用的是ExecuteReader,那来的DataTable?另外,如果用户名或密码里有单引号,你这个sql会报错。
解决方案六:
引用3楼nry19871012的回复:
//这名句GetUserInfo()函数中返回的是什么?DataTabledt=LinkDataBase.GetUserInfo();//你下面写数据库访问的并没有用datatable去接收。stringselectsql="select*from用户权限wheresysuser='"+username+"'andpassword='"+password+"'";
因为不会写用datatable判断密码用户名的语句。。。,网上搜到判断用户权限用的是datatable,然后判断用户名密码的又不是。。。我自己也感觉有点乱
解决方案七:
引用5楼teddy169的回复:
Quote: 引用3楼nry19871012的回复:
//这名句GetUserInfo()函数中返回的是什么?DataTabledt=LinkDataBase.GetUserInfo();//你下面写数据库访问的并没有用datatable去接收。stringselectsql="select*from用户权限wheresysuser='"+username+"'andpassword='"+password+"'";因为不会写用datatable判断密码用户名的语句。。。,网上搜到判断用户权限用的是datatable,然后判断用户名密码的又不是。。。我自己也感觉有点乱
Getuserinfo()就是用来获得用户权限表的
解决方案八:
引用4楼qbilbo的回复:
boolenabled2=sdr.GetBoolean(3);.....你用的是ExecuteReader,那来的DataTable?另外,如果用户名或密码里有单引号,你这个sql会报错。
打算用dataTable判断用户权限,然后executereader用来判断用户名密码是否正确,这两个一起用会冲突吗?我也感觉有点乱。。请前辈指教
解决方案九:
估计是dt里没有那些列,你试试把if里改成boolenabled2=Convert.ToBoolean(sdr["save_1"]);看看行不行
解决方案十:
引用8楼tcf_2011的回复:
估计是dt里没有那些列,你试试把if里改成boolenabled2=Convert.ToBoolean(sdr["save_1"]);看看行不行
sdr["save_1‘’]会不会有问题呢没有指明第几行好像。。
解决方案十一:
引用9楼teddy169的回复:
Quote: 引用8楼tcf_2011的回复:
估计是dt里没有那些列,你试试把if里改成boolenabled2=Convert.ToBoolean(sdr["save_1"]);看看行不行sdr["save_1‘’]会不会有问题呢没有指明第几行好像。。
我以为用户名+密码查询到的结果是唯一的。。。