应用程序的数据通常存放在数据库当中,在程序运行的时候我们通过与数据库的连接执行语句进行数据的增,删,改操作,可是这样执行程序就会产生一个效率问题。少量的数据可以这样进行操作如果数据有千条甚至万条的时候还用这种方式就会是程序变得缓慢,从而效率低下。
在这里通过.NET+SQLServer的组合来阐述一下这个问题。问题的产生:
比如在我们有一个学生档案的管理系统,我们在操作学生档案的时候必定会使用SqlConnection 去建立数据库连接然后使用SqlDataAdapter去执行一条SQL命令来来返回当前数据库中的数据。
如:
string strSql = "server=.; database=practice;uid=sa;pwd=;";
SqlConnection cnn = new SqlConnection(strSql);
SqlDataAdapter da = new SqlDataAdapter("select *from Student",cnn);
DataTable dt = new DataTable();
da.Fill(dt);
这样我们就可以返回Student表中的全部数据。修改数据之后我们又通过相应的SQL语句返回到数据库当中。如果用户进行的是大批量数据的修改或者是大批量数据的增加,我们是不是还是遵循这种方式进行操作?
  答案是否定的,如果使用这种方式去进行大批量数据的修改和增加,必将会是大量的使用ADO.NET去与数据库建立连接然后执行SQL语句,程序的效率也将会变得很低。问题的解决:
我们可以使用XML(可扩展标记语言)进行这一操作,当FORM运行的时候我们就执行一次SQL语句内容为:
“select *from Student for XML AUTO ,ELEMENTS”
执行这条SQL语句之后就会返回这张表的XML形式,然后我们使用IO将这张表进行保存。这样以来就会产生一个以表名为文件名的XML文档,以后的修改操作我们就可以在通过这张表来完成。当用户全部修改完成以后关闭FORM的时候我们将修改后的数据使用SQL语句一次性读入数据库当中。然后删除生成的XML文件。
在这里会出现问题:
问题一:我们将数据读入数据库的时候怎么去判别XML中那些数据是被修改过的,如果使用SQL语句和数据库当中的去做对比的话,无疑这个方案的目的就会被磨灭,因为如果拿XML文档中的数据去和数据库当中的数据去做对比相同的跳过不同的做修改的话程序的效率无疑会更慢,所以这里我们将用户修改后的数据不保存在FORM加载时生成的XML中而是再生成一个XML文档这个文档中专门存放用户修改后的数据然后将这个文档中的内容读入数据库当中。
问题二:如果FORM关闭的时候数据库连接出现错误怎么办?这个问题是相当切实的因为这样一来就会给用户很大的损失,所以在这里我们做一个线程这个线程去循环判断与数据库的连接是否正确如果正确则将修改后生成的XML文档中的内容插入到数据库当中,如果数据库连接有误这个线程则一直去做判断直到数据成功为止。在这条线程工作期间我们将主面板的退出按钮屏蔽并且告诉用户数据库更新出现错误数据连接有误,同时弹出数据库配置面板以便用户及时进行数据库连接。
这样一来用户在进行数据操作的时候无论进行多少次操作使用ADO.NET的次数只有两次(同表)。这样就可以在增强应用程序的效率。
两条SQL语句的查询成本(相对于批处理)均为50%。
欢迎大家批评指正。
     QQ:287199743
E_main:[email protected]
                                       Saturday, April 28, 2007

解决方案 »

  1.   

    由北方民族大学主办,北方语言研究院、文史学院承办的中国北方语言指导会暨高级会员研修班结课仪式于4月30日上午在我校接待中心举行。北京大学安炳浩教授、瞿霭堂教授、程适良教授、巴特尔教授及来自北方民族大学、宁夏大学、宁夏师范学院的65位学员参加了仪式。仪式由赵杰副校长主持。
        在结课仪式上,程适良教授还向学员作了题为《我的突厥比较语言学研究经历和研究经验》的学术报告,与会人员围绕主题进行了自由讨论。在讨论中,我校林涛教授和宁夏师范学院杨苏平教授结合自己的研究,分别从宁夏语言研究和宁夏回族语言研究向与会人员作了精辟的讲解。
        最后,赵杰副校长从北方语言研究的内容和范围等方面,对中国北方语言指导会暨高级会员研修班的成功举办进行了总结。他说,在北方民族大学这块平台上,中国北方语言指导会暨高级会员研修班的成功举办,再一次演奏了一曲火花碰撞而又和谐融洽的交响曲。来自语言学界的教授为北方民族大学乃至宁夏全区带来了一桌丰盛的语言文化大餐,为我校创建优良学风起到了积极推动作用。他还希望本届会员要学会吃苦,为中国北方语言的研究做出努力。
        会后,北京大学博士导师组成员与学员合影留念。
      
                                                   (校党委宣传部)