问题描述
usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Data.OleDb;namespaceFlimManager{publicpartialclassForm1:Form{publicintpower;publicForm1(){InitializeComponent();}privatevoid登陆ToolStripMenuItem_Click(objectsender,EventArgse){if(textBox1.Text==""||textBox2.Text==""){MessageBox.Show("请输入用户名和口令,然后再登录");return;}stringSQL="selectPowerfromEmployeewhereEmployeeID=";SQL+=textBox1.Text+"andPassWord='"+textBox2.Text.Trim()+"'";stringmyConStr="Provider=Microsoft.Jet.OLEDB.4.0;";myConStr+="DataSource=FilmManager.mdb;";OleDbConnectionmyCon=null;OleDbCommandmyCom=null;try{myCon=newOleDbConnection(myConStr);myCon.Open();myCom=newOleDbCommand(SQL,myCon);OleDbDataReaderrd=myCom.ExecuteReader();if(rd.HasRows){rd.Read();power=Convert.ToInt32(rd[0]);}else{MessageBox.Show("没有这个用户或者密码不正确,请重新登录!");}}catch(OleDbExceptionoe){MessageBox.Show(oe.Message,"Error");}finally{if(myCon.State==ConnectionState.Open)myCon.Close();}//Form1f=newForm1();switch(power){case2:音箱制品管理ToolStripMenuItem.Enabled=true;人员管理ToolStripMenuItem.Enabled=true;系统维护ToolStripMenuItem.Enabled=true;break;case1:系统维护ToolStripMenuItem.Enabled=true;break;default:MessageBox.Show("您没有使用此系统的权利!");break;}}}}错误出在if(rd.HasRows){rd.Read();power=Convert.ToInt32(rd[0]);}else{MessageBox.Show("没有这个用户或者密码不正确,请重新登录!");}错误提示:不存在此行/列的数据但是我建立了相应的数据库呀?哪里的原因
解决方案
解决方案二:
OleDbDataReaderrd=myCom.ExecuteReader();改成:inti=(int)myCom.ExecuteReader();if(i=0){MessageBox.Show("没有这个用户或者密码不正确,请重新登录!");}
解决方案三:
if(rd.HasRows&rd.Read()){rd.Read();power=Convert.ToInt32(rd[0]);}else{MessageBox.Show("没有这个用户或者密码不正确,请重新登录!");}最好是执行时查看一下SQL中的内容,把SQL中的内容到你的Access查询中执行一下看看结果。stringSQL="selectPowerfromEmployeewhereEmployeeID=";SQL+=textBox1.Text+"andPassWord='"+textBox2.Text.Trim()+"'";
解决方案四:
if(rd.HasRows&rd.Read()){power=Convert.ToInt32(rd[0]);}else{MessageBox.Show("没有这个用户或者密码不正确,请重新登录!");}