先下载这个问题项目 下载调试项目
涉及的技术: java,swt,oracle,jdbc
先导入这个项目
- 缺少jar包
导入后就会报错:,这里很简单,去除swing2swt.jar,这是个多余的包.
去除包后报错如下:
这种类是jre所拥有的,所以是缺少jre包,导入jre或者jdk即可
知识点:一个项目上出现红色感叹号十有八九是包找不到,删除并正确导包(如果需要的话)
2.配置文件问题
3.找不到类
知识点:出现类找不到,可能有两种原因:(1)类名写错了;(2)没有导包
4.无法获得数据库连接(调用中无效的参数)
尝试运行,报错如下:这里只显示部分错误(下面就不赘述这句话了)
这里是个巨坑,这个百度上都没个好的答案,dubug也达不到这个位置
错误定位在DpHelper类的36行错误,这里用了这个方法 java.sql.DriverManager.getConnection(String url, Properties info),从API中看出,使用这种方法,用户名和密码的格式一定是这样的:user,password.而项目中配置文件的是username,password,导致该方法找不到一个用户.
解决:(1)把配置文件中的username改成user即可
(2)或者使用另一个getConnection方法,类似于加载url一样加载username和password
知识点:getConnection(String url, Properties info),方法要求数据格式是user,password
5.参数问题
尝试运行,报错如下
这个错误百度上也不能好的解决
来!debug!,会发现是设值方法(setParams)出错,会发现,循环只执行了一次,明明有两个参数,说明第二个参数有问题,这也验证了报错说参数2出错,再看循环结束条件i<len,而i又从1开始,所以会少一次,
修改有两种方法:(1) i 从0开始, 代码修改为pstmt.setObject(i+1,params[i]);
(2) i<=len, 代码修改为pstmt.setObject(i,params[i-1]);
setObject,这个方法 ,下标1 表示第一个参数,我也不知道为什么, 说好的0才是第一个参数呢,估计他们脑残!
知识点: debug是个好东西,要学会使用,
6. sql错误(未明确定义列)
至此,终于能登录了(当然,数据库你要创建好,还要记得commit).
当点击"学生信息管理"时,报错如下:
错误定位在YcStuInfoDao类的14行,这里的sql语句直接在PLSQL Developer之类的软件中使用也是会报错的
修改:把cid修改为c.cid即可
知识点:1.当联表查询时,同一个字段几个表同时拥有时,却没指定哪个表的字段时就使用,就会报这样的错
2.在使用sql语句时,建议在PLSQL Developer之类的软件中能正确使用了后再放到项目中使用
7.数据在swt中显示错误(学生班级为null)
既然数据显示了,说明数据是取到了,通过dubug可以发现,班级列的名字没有重命名,
解决:加上重命名即可,YcStuInfoDao类的24行,第二个字段后加上cname,可以看看其他方法的写法
知识点:如果一个数据都不显示,较大的可能是数据根本没取到,如果只是部分数据没有,较大可能是数据显示问题
8.空指针异常
通过代码分析,需要打开的窗口没有实例化
解决:在StuSysManager类的177行前加上判断,如果StaticObject.showStuInfo面板为空null就不操作(return)
(这样做用户不能直接打开子列表的内容了,这只是不报错了,对系统的友好性来说,这是不可取的,)
知识点:对代码读解读能力要高,也可以用debug来发现问题
9.swt界面的不显示
知识点:界面不显示,要么是没有这界面,要么就是没打开这界面
10.sql错误(列在此处不允许)
当试图去添加学生信息时报错,如图:
查看sql语句后,发现使用序列的单词错误了,
解决:将seq_YcStuInfo_sid.netval改为seq_YcStuInfo_sid.nextval
知识点:这是关于sql常见的错误,就是参数的问题
11.sql错误(无效数字)
当试图去添加学生信息时报错,如图
查看数据库和sql后,断言cid出错,只有cid是数字类型,往前找cid哪来的,这里推荐一个好用的快捷键,ctrl+alt+h,可以追踪你选中的方法/变量使用情况 ,更多快捷键使用
错误定位在AddStuInfo类的116行,截取了cid但是没重新赋值给cid,因为界面上的cid不全是我们想要的数据,
解决:只要把截取的结果赋值给cid即可
知识点:合理的推论会加快你找错的速度,擅用快捷键会让你更快的定位错误
12.添加学生时,无法添加图片
13.无法显示学生的照片
好不容易能添加了,却不能显示学生图片了,其他数据有,就是图片没有,这个问题与问题7类型
错误定位在ShowStuInfo类的91行,
解决:key写错了,将pohto该为photo即可
错误仍在寻找与调试中......
如果有什么疑问,欢迎留言!