CREATE TABLE [dbo].[SYS_Users](
[UserID] [int] IDENTITY(1,1) NOT NULL,
[UserName] [varchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
[UserPswd] [varchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
CONSTRAINT [PK_SYS_Users] PRIMARY KEY CLUSTERED
(
[UserID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
数据库是SQLServer 2005 , 该表有1733 条数据
我写了以下代码来测量完成操所用的时间,学过物理的都知道,测量不是一次半次就可以了,需要多次测量来求平均值,才能作为测量值,呵呵
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
namespace MyMain
{
class Program
{
static void Main(string[] args)
{
int i = 0;
Console.WriteLine("初始化....");
string cnString = @"Server=localhost;Database=Education.Database;UID=sa;PassWord=123456;";
SqlConnection cn = new SqlConnection(cnString);
SqlCommand cm = new SqlCommand("select * from SYS_Users", cn);
cn.Open();
SqlDataReader rdr = cm.ExecuteReader();
while (rdr.Read())
{
i++;
}
rdr.Close();
cn.Close();
SqlDataAdapter ada = null;
Console.WriteLine("开始....");
DateTime start;
DateTime end;
TimeSpan[] TS = new TimeSpan[5];
for (int counter = 1; counter <= 100; counter++)
{
start = DateTime.Now;
for (int smallCounter = 1; smallCounter <= 10; smallCounter++)
{
ada = new SqlDataAdapter("select * from SYS_Users", cn);
SYS_UserDS.SYS_UsersDataTable table = new SYS_UserDS.SYS_UsersDataTable();
cn.Open();
ada.Fill(table);
cn.Close();
}
end = DateTime.Now;
TS[0] += end - start;
start = DateTime.Now;
for (int smallCounter = 1; smallCounter <= 10; smallCounter++)
{
cm = new SqlCommand("select * from SYS_Users", cn);
IList<MySysUser> MyList = new List<MySysUser>();
cn.Open();
rdr = cm.ExecuteReader();
while (rdr.Read())
{
MyList.Add(new MySysUser(rdr.GetInt32(0), rdr.GetString(1), rdr.GetString(2)));
}
rdr.Close();
cn.Close();
}
end = DateTime.Now;
TS[1] += end - start;
start = DateTime.Now;
for (int smallCounter = 1; smallCounter <= 10; smallCounter++)
{
cm = new SqlCommand("select * from SYS_Users", cn);
ArrayList MyAl = new ArrayList();
cn.Open();
rdr = cm.ExecuteReader();
while (rdr.Read())
{
MyAl.Add(new MySysUser(rdr.GetInt32(0), rdr.GetString(1), rdr.GetString(2)));
}
rdr.Close();
cn.Close();
}
end = DateTime.Now;
TS[2] += end - start;
start = DateTime.Now;
for (int smallCounter = 1; smallCounter <= 10; smallCounter++)
{
cm = new SqlCommand("select * from SYS_Users", cn);
MySysUser[] MyArray = new MySysUser[1800];
cn.Open();
int flag = 0;
rdr = cm.ExecuteReader();
while (rdr.Read())
{
MyArray[flag] = new MySysUser(rdr.GetInt32(0), rdr.GetString(1), rdr.GetString(2));
flag++;
}
rdr.Close();
cn.Close();
}
end = DateTime.Now;
TS[3] += end - start;
start = DateTime.Now;
for (int smallCounter = 1; smallCounter <= 10; smallCounter++)
{
ada = new SqlDataAdapter("select * from SYS_Users", cn);
DataTable aTable = new DataTable();
cn.Open();
ada.Fill(aTable);
cn.Close();
}
end = DateTime.Now;
TS[4] += end - start;