ADO.NET 2.0 中的新增 DataSet 功能--性能提高40倍?(downmoon翻译自MSDN)

ADO.NET 2.0 中的新增 DataSet 功能--MSDN(downmoon翻译成Csharp)
原文地址: http://www.microsoft.com/china/MSDN/library/data/dataAccess/adonetdatasetenhance.mspx?mfr=true

因为原文代码用的是vb.net,阅读起来不便,帮翻译成Csharp2005,方便大家阅读。呵呵!


  private   void  button1_Click( object  sender, EventArgs e)
        
... {
            
//下列代码在vs2005下执行40秒!
            //在vs2003下执行30分钟!!增加44倍!!

            DataSet ds = new DataSet();
            System.DateTime time1 
= new System.DateTime();
            System.TimeSpan ts 
= new TimeSpan();
            System.Timers.Timer tm 
= new System.Timers.Timer();
            tm.Enabled 
= true;
            tm.Interval 
= 1000;
            
int i;
            
int SPsecond = 0;
            DataRow dr;
            ds.Tables.Add(
"BigTable");
            ds.Tables[
0].Columns.Add("ID", Type.GetType("System.Int32"));
            ds.Tables[
0].Columns["ID"].Unique = true;
            ds.Tables[
0].Columns.Add("Value", Type.GetType("System.Int32"));
            WaitLabel.Visible 
= true;
            
this.Cursor = Cursors.WaitCursor;
            
this.Refresh();
            time1 
= DateTime.Now;
            Random rand 
= new Random();
            
//Random ri = new Random(unchecked((int)DateTime.Now.Ticks));
            int value;
            
for (int k = 1; k <= 1000000; k++)
            
...{
                
try
                
...{
                    value 
= rand.Next();
                    dr 
= ds.Tables[0].NewRow();
                    dr[
"ID"= value;
                    dr[
"Value"= value;
                    ds.Tables[
0].Rows.Add(dr);
                }

                
catch (Exception ex)
                
...{
                }

            }

            WaitLabel.Visible 
= false;
            
this.Cursor = this.DefaultCursor;
            ts 
= DateTime.Now - time1;
            SPsecond 
= ts.Seconds;
            MessageBox.Show(
"Elapsed Time: " + SPsecond.ToString() + "  Seconds");
            MessageBox.Show(
"count = " + ds.Tables[0].Rows.Count);
        }

        
private   void  button2_Click( object  sender, EventArgs e)
        
... {
            XMLFormat();
        }

        
private   void  XMLFormat()
        
... {
            DataSet ds 
= new DataSet();
            System.Data.SqlClient.SqlDataAdapter da 
= new System.Data.SqlClient.SqlDataAdapter("select * from [order details]", GetConnectionString());
            da.Fill(ds);
            System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bf 
= new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
            
string FileName = "c:\" + DateTime.Now.ToString("yyyyMMddhhmmsslll"+ "xml20.txt";
            System.IO.FileStream fs 
= new System.IO.FileStream(FileName, System.IO.FileMode.CreateNew);
            bf.Serialize(fs, ds);
            MessageBox.Show(
"生成成功" + FileName + " " + "文件大小(b):" + fs.Length.ToString());
        }

        
private   void  BinaryFormat()
        
... {
            DataSet ds 
= new DataSet();
            System.Data.SqlClient.SqlDataAdapter da 
= new System.Data.SqlClient.SqlDataAdapter("select * from [order details]", GetConnectionString());
            da.Fill(ds);
            
            
//下句使生成数据减少5倍左右
            ds.RemotingFormat = SerializationFormat.Binary;

            System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bf 
= new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
            
string FileName = "c:\" + DateTime.Now.ToString("yyyyMMddhhmmsslll"+ "Binary20.txt";
            System.IO.FileStream fs 
= new System.IO.FileStream(FileName, System.IO.FileMode.CreateNew);

            bf.Serialize(fs, ds);
            MessageBox.Show(
"生成成功" + FileName + " " + "文件大小(b):" + fs.Length.ToString());

        }

        
private   string  GetConnectionString()
        
... {
            
//return MySettings.Value.NorthwindConnection;
            return "server=10.0.0.121;database=northwind;uid=sa;pwd=sa";
        }

        
private   void  button3_Click( object  sender, EventArgs e)
        
... {
            BinaryFormat();
        }

        
private   void  button4_Click( object  sender, EventArgs e)
        
... {
            getGridViewData();
        }

        
private   void  getGridViewData()
        
... {
            
try
            
...{
                SqlConnection connection 
= new SqlConnection(GetConnectionString());
                SqlCommand command 
= new SqlCommand("SELECT * from customers", connection);
                connection.Open();
                System.Data.SqlClient.SqlDataReader dr 
= command.ExecuteReader();
                
//Fill table with data from DataReader
                System.Data.DataTable dt = new DataTable();
                dt.Load(dr, LoadOption.OverwriteChanges);

                
// Display the data
                dataGridView1.DataSource = dt;

            }


            
catch (SqlException ex)
            
...{
                MessageBox.Show(ex.Message);

            }

        }

转载于:https://www.cnblogs.com/eecool/archive/2008/09/24/1298133.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值