问题描述
这是运行后的问题这是代码usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Data.OleDb;namespaceLoginForm{publicpartialclassForm1:Form{publicstaticstringname;publicstaticstringpsw;publicstaticstringright;publicForm1(){InitializeComponent();}privatevoidlogin_btn_Click(objectsender,EventArgse){if(this.textname.Text.Trim()==""||textpsw.Text==""){MessageBox.Show("请输入您的用户名和密码!","提示!");return;}stringUsername=textname.Text;stringUserpsw=textpsw.Text;if(Username==""||Userpsw==""){MessageBox.Show("请输入用户名和密码!","提示!");}else{OleDbConnectionconn=newOleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;DataSource=D:\Documents\Database2.accdb");if(radioButton1.Checked){stringstr="select*fromloginwhereUsertight='"+this.textname.Text.Trim()+"'";try{conn.Open();OleDbCommandcmd=newOleDbCommand(str,conn);OleDbDataReaderread=cmd.ExecuteReader();if(read.Read()){if(textpsw.Text.Trim().Equals(read["Userpsw"].ToString().Trim())){MessageBox.Show("登录成功!","欢迎登录本系统!");this.Hide();AdminLoginfm=newAdminLogin();fm.Show();}else{MessageBox.Show("密码输入错误,请重新输入!");}}}catch(Exceptionex){MessageBox.Show(ex.ToString());}}if(radioButton2.Checked){stringstr="select*fromstuwhereUserright='"+this.textname.Text.Trim()+"'";try{conn.Open();OleDbCommandcmd=newOleDbCommand(str,conn);OleDbDataReaderread=cmd.ExecuteReader();if(read.Read()){if(textpsw.Text.Trim().Equals(read["Userpsw"].ToString().Trim())){MessageBox.Show("登录成功!","欢迎登录本系统!");this.Hide();StuLoginfm=newStuLogin();fm.Show();}else{MessageBox.Show("密码输入错误,请重新输入!");}}}catch(Exceptionex){MessageBox.Show(ex.ToString());}}if(radioButton1.Checked==false&&radioButton2.Checked==false){MessageBox.Show("请选择权限!");}}}privatevoidcancel_btn_Click(objectsender,EventArgse){Application.Exit();}}}
解决方案
解决方案二:
断点跟啊!!到底哪个代码出错你自己都不知道,瞎猜吗
解决方案三:
代码显示有错啊没错
解决方案四:
代码显示有错啊没错。。。。。。。。调试代码没显示错误啊
解决方案五:
你这代码在哪里运行的,本机吗如果是放到其他环境里运行,先检查环境
解决方案六:
错误提示很明显第49行错误原因是有一个参数没有赋值从报错看你的sql有问题
解决方案七:
确认数据库有没有Usertight字段,再确认Usertight的类型是数值还是字符串
解决方案八:
粗看一下错误,有个参数没传递
解决方案九:
字段名。。。
解决方案十:
引用8楼u013063561的回复:
字段名。。。
我看错了。00不是一张表。--!~
解决方案十一:
代码改完了。。还是那个问题。。。
解决方案十二:
你单步调试一下,另数据连接后,读取数据完成后还要关闭
解决方案十三:
应该是你字段写错了,字段错了就会有这个错误提示了
解决方案十四:
查一下:一个是登陆表login有没有usertight这个字段,一个是学生表stu里有没有userright这个字段,
解决方案十五:
当抛出异常时,你至少应该调试str中是什么值。把它贴出来,才知道到底有什么参数?为什么需要指定值?
解决方案:
引用3楼c516264586的回复:
代码显示有错啊没错。。。。。。。。调试代码没显示错误啊
你自己自欺欺人地try....catch了,试图带病工作,还怎么能够调试呢?
解决方案:
程序开发,就是要找到各种bug,让程序迟早要垮掉的异常今早表现出来。当你把几百个bug修改过后,并且每一次发现bug的过程都能够在下一次发布程序之前先“回归测试”多遍以后,程序才有了质量。我们看一个程序员是否有能力,首先是观察其调试的方法(调试时是否有能力),而不是看他能从网上搜索到多少个代码段子抄下来。try....catch只有在release版本(向生产环境发布产品)时采用到,通常都会使用“条件编译”或者“Conditional标签”来屏蔽掉那些语句。不但在我们自己的机器上要保持保持debug,而且就算是发布到测试环境时也要保持debug(而不是release)。在你学习编程、一步一步学习知识的过程中,如果你的老师没有教你调试,而是教你写try...catch,这其实是一种蒙骗。
解决方案:
引用3楼c516264586的回复:
代码显示有错啊没错。。。。。。。。调试代码没显示错误啊
usertight总感觉你是不是这个字段写错了?你看了吗
解决方案:
引用17楼u013063561的回复:
Quote: 引用3楼c516264586的回复:
代码显示有错啊没错。。。。。。。。调试代码没显示错误啊usertight总感觉你是不是这个字段写错了?你看了吗
嗯,我看靠谱!在每一个sql字符串下一行上打上断点,程序执行到断点处,鼠标放到string变量上,把sql语句弄出来执行一下。
解决方案:
引用18楼andywangguanxi的回复:
Quote: 引用17楼u013063561的回复:
Quote: 引用3楼c516264586的回复:
代码显示有错啊没错。。。。。。。。调试代码没显示错误啊usertight总感觉你是不是这个字段写错了?你看了吗
嗯,我看靠谱!在每一个sql字符串下一行上打上断点,程序执行到断点处,鼠标放到string变量上,把sql语句弄出来执行一下。
恩,按说字段名应该是一样的,不管是那个表。。感觉应该是userright,不应该是usertight
解决方案:
感谢各位。。。。代码问题是手误打错了。。。。关键问题是Access的问题。。问题已经解决了
解决方案:
引用20楼c516264586的回复:
感谢各位。。。。代码问题是手误打错了。。。。关键问题是Access的问题。。问题已经解决了
什么3问题?
解决方案:
最好设置下断点,看看执行前的sql和参数。目测stringstr="select*fromloginwhereUsertight='"+this.textname.Text.Trim()+"'";这里的引号多了。
解决方案:
出错,找错,就是进步哈
解决方案:
看不懂什么情况啊
解决方案:
你应该先F5调试,调试成了再放到真实环境里测试代码本身就有问题,你调试的时候保证也会报错的
解决方案:
不是大神,只看不说~
解决方案:
引用5楼mervyn807的回复:
错误提示很明显第49行错误原因是有一个参数没有赋值从报错看你的sql有问题
正解在这里!!我觉得,这么明显的错误提示,会基本程序调试的,都能找到问题所在了。。