你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:文章管理 / 本期精品文章
利用SqlBulkCopy实现网上答题系统
 

张德强

摘 要 本文利用.Net 2.0引入的SqlBulkCopy新类结合SQL Server2005实现网上答题系统。介绍一种把其他数据源的数据批量加载到SQL Server表的高效方法,并确保其插入数据的完整性,一致性。

关键词 .Net 2.0C#SqlBulkCopy,批量加载

一、前言

问卷调查是获取用户信息最有效途径之一,不管是企业单位,还是政府部门都广泛采用。

利用网上这种途径来收集信息,可以节省大量的人力和物力。而同样有奖问题、网上考试也被各个企业单位广泛应用。其实现方式都可以通过网上答题系统来实现。  

网上答题的题型主要有单项选择题,多项选择题和判断题。以往网上答题系统的实现方式是程序收集用户回答的答题信息,通过编写事务,把答题信息逐条的写入数据库。这样主要有两个问题,一是需要开发人员自己写事务来处理把答题信息插入数据库,如果处理不好会使收集的答题信息不完整,给开发人员带来不少的麻烦和开发难度;另外就是程序效率比较低下,特别是在题量比较大的情况下。通过.Net 2.0引入的SqlBulkCopy新类可以有效的解决这些问题。

本文结合笔者的开发和应用实践,详细介绍利用SqlBulkCopy实现网上答题系统的原理和关键步骤。

二、SqlBulkCopy介绍

SqlBulkCopy.NET Framework 2.0新增的类,位于命名空间System.Data.SqlClient下,主要提供把其他数据源的数据有效批量的加载到SQL Server表中的功能。类似与 Microsoft SQL Server 包中名为 bcp 的命令行应用程序。但是使用 SqlBulkCopy 类可以编写托管代码解决方案,性能上优于bcp命令行应用程序,更优于如Insert方式向SQL Server表加载大量数据。SqlBulkCopy可以应用到大批量数据的转移上,而不管数据源是什么。

三、数据库设计

1.数据表设计

打开SQL Server2005,建立数据表tUsertAnswer,分别是用户信息表和答题表。具体数据库关系和字段如图1所示:

1 数据表及关系图

具体思路是:用户根据答题内容回答完题,并填写完用户的个人信息。程序首先收集这些数据,并向用户信息表插入用户信息,返回该用户的编号(即UserID)。再根据用户编号生成内存表DataTable,利用SqlBulkCopy把内存表中数据批量的插入答题表。由数据提交的情况向用户返回成功或失败的消息。

2.存储过程设计

新增一个存储过程AddNewUser,完成根据姓名、电话和身份证号向用户信息表插入用户信息,返回自增量字段生成的用户ID号功能,具体代码如下:

CREATE PROCEDURE [dbo].[AddNewUser]

@fUserName varchar(50),

@fPhone varchar(100),

@fIDCard varchar(50),

@fUserID int output—传出参数

AS

begin tran

SET NOCOUNT ON;

insert into tUser (fUserName,fPhone,fIDCard)values(@fUserName,@fPhone,@fIDCard);

set @fUserID=(SELECT @@identity);--返回用户ID

if @@error!=0   rollback

    else    commit

四、程序实现

   根据图2制作网页,其中单项选择题和判断题使用RadioButtonList服务器控件,多项选择题使用CheckBoxList服务器控件。设置好各服务器控件的属性,题所使用控件的命名采用“题型+序号”的命名方式,如选择题第一题命名为:a1

  推荐精品文章

·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 
·2023年7月目录
·2023年6月目录 
·2023年5月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089