一周前教务处MC老师给了我一套计算机等级考试报名系统,说是基本的功能有了,但是还有一些功能作者留着没开发。我拿着一看,发现作者已经几乎把该有的东西都实现了,就没做考试成绩查询。据说报名资料修改也不能用,但是我大体看了下代码,代码没问题~~很是灵异。
前一阵一直在忙学院挂牌的事情,这不刚有空余时间,就拿出了几小时把这个程序完善了。先说成绩查询,这套计算机等级考试报名系统用的是Access+C#做的B/S架构的系统,而学院最终提供的成绩是DBF格式的。开始的时候我想把DBF导入到Access里,可是发现这样一是很麻烦,二是Access是桌面型数据库,多人查询效率太低,于是我直接令程序将DBF的数据库传到/Score文件夹下,让程序去连接这个夹子,查询的时候,系统直接读取DBF。
说干就干,对于DBF,我仅在大一的时候学过半学期,而C#结合VFP的应用更是没做过,于是一阵疯狂Google,找到了连接数据源的方法。不过,这里也有些问题:最开始的时候,我使用了“Microsoft.Jet.OLEDB.4.0”去连接DBF,可是程序却总抛出异常说路径无效。奇怪之余再疯狂Google,发现得用“vfpoledb.1”来连接数据库。这样,连接DBF的链接就可以写成:
public static string ConnVpfString = “Provider=vfpoledb.1;Data Source= “+ System.Web.HttpContext.Current.Server.MapPath(System.Configuration.ConfigurationSettings.AppSettings[“VFPConnectionString”])+”;Extended Properties=’dBASE 5.0′”;
(使用System.Configuration.ConfigurationSettings.将数据库路径写入Web.config配置文件)
之后要访问数据库,也只需要(代码来自MSDN)
using (OleDbConnection connection = new OleDbConnection(ConnVpfString))
{OleDbCommand command = connection.CreateCommand();
command.CommandText = strSql;//strSql为要执行的SQL语句
connection.Open();
OleDbDataReader reader = command.ExecuteReader();
reader.Read();
之后就可以用
reader[i]查询出来的值取出来了,当然,最后需要关闭链接
reader.Close();
下面说说第二个问题,程序提交修改,没有抛出任何异常,可是却没有执行Update。这个问题我也Google了一下,发现很多人有相同的问题,呵呵,这可能是Access的一个小Bug吧,即Update的字段名必须有序,不然提交了不会报错也不会Update,此外,我还发现了如果Access数据什么都不填,默认值不为0,我手动指定默认值为0,才解决了这个问题。看来0跟Null还是有不小的区别哇哇~~~
最后,把我改的东西放出来吧,当然,版权归原作者所有,我找了一圈也不知该如何联系原作者,只看到在CSDN上有人发过这个程序,我就权当他开源好了啦~~
关于该程序的几点说明
1)增加成绩查询功能。通过后台上传成绩数据表*.dbf文件,在前台就可以查询
2)修正修改功能
3)将所有出现校名的地方改为“山东青年政治学院”
此外,还有几点需要注意:
1)部署的时候仅需要djks_final.rar这个包里的内容,另外一个压缩包为源代码。
2)因为Win 2003等在不装Visual Foxpro情况下默认不带VFP的OLEDB驱动,所以必须安装djks_final.rar这个压缩包内的VFPOLEDBSetup.msi才可以正常进行成绩查询~
3)如果使用不正常,请给以下目录赋予EveryOne的修改权限:hxyy_database ,photo ,score ,UpLoad
4)程序已在Vmware 6.5+Win2003+IIS6+.Net 3.5下测试通过
计算机等级考试报名系统 下载
计算机等级考试报名系统 源代码 下载