发布网友 发布时间:2022-05-03 01:51
共3个回答
懂视网 时间:2022-05-03 06:12
strConnect = "Data Source=localhost;Initial Catalog=cmsw;Integrated Security=True; Application Name=pgq"; DataSet dsCode = new DataSet(); using (SqlConnection sqlConn = new SqlConnection(strConnect)) { sqlConn.Open(); SqlDataAdapter sda = new SqlDataAdapter("SELECT top 200000 TRANCODE from JobRecord ", sqlConn); sda.Fill(dsCode, "Test"); sqlConn.Close(); } DateTime dt1 = DateTime.Now; foreach (DataRow dr in dsCode.Tables[0].Rows) { using (SqlConnection sqlConn = new SqlConnection(strConnect)) { string code = dr["TRANCODE"].ToString(); SqlCommand cmd = new SqlCommand("SELECT * from JobRecord WHERE TRANCODE=@TRANCODE ", sqlConn); cmd.Parameters.AddWithValue("TRANCODE", code); sqlConn.Open(); SqlDataReader dataRead = cmd.ExecuteReader(); if (dataRead.Read()) { Console.WriteLine("One Cycle:{0}",dataRead["TRANCODE"]); } sqlConn.Close(); } } DateTime dt2 = DateTime.Now; TimeSpan ts1 = dt2 - dt1; Console.Clear(); Console.WriteLine("Total MilSeconds:{0}", ts1.Milliseconds); DataSet dsTest2 = new DataSet(); using (SqlConnection sqlConn = new SqlConnection(strConnect)) { sqlConn.Open(); SqlDataAdapter sda = new SqlDataAdapter("SELECT top 200000 * from JobRecord ", sqlConn); sda.Fill(dsTest2, "dsTest2"); sqlConn.Close(); } int serialNo = 0; while (serialNo < 200000) { Random rand = new Random(); int index = rand.Next(1, 200000); var code = dsTest2.Tables[0].AsEnumerable() .Where(r => r.Field<string>("TRANCODE") == dsCode.Tables[0].Rows[index]["TRANCODE"].ToString()) .Select(r => r.Field<string>("TRANCODE")).ElementAtOrDefault(0); Console.WriteLine("Scend Cycle:{0}",code); serialNo++; } DateTime dt3 = DateTime.Now; TimeSpan ts2 = dt3 - dt2; Console.WriteLine("First Result, TotalSeconds:{0}; Second Result TotalSeconds:{1}", ts1.TotalSeconds, ts2.TotalSeconds); Console.ReadLine();
将数据一次性加载到DataSet与逐行从DB内读取的性能比较
标签:校验 apt next select reac init nec 方式 value
热心网友 时间:2022-05-03 03:20
datareader和dataset最大的区别在于,datareader使用时始终占用sqlconnection,在线操作数据库..任何对sqlconnection的操作都会引发datareader的异常..因为datareader每次只在内存中加载一条数据,所以占用的内存是很小的..因为datareader的特殊性和高性能.所以datareader是只是向前读的热心网友 时间:2022-05-03 04:38
用connection对象和command对象与数据库连接并交互后,有两种方法来访问获取的结果。