当前位置:编程学习 > C#/ASP.NET >>

循环执行数据集操作时,如何提高速度?

请教各位高手,利用C#读固定格式文件中的数据,并将结果存储到数据库中,需要将文件中的每行数据分别存成数据库中的一条记录,在循环中实现数据库操作,代码如下:
SqlConnection mySqlConnection=new SqlConnection (sqlstr);
DataSet dataset=new DataSet ();
SqlDataAdapter sda=new SqlDataAdapter();
 for(int i=0;i<60;i++)
{
 sql="update database set tem1='"tt"'"
 sda=new SqlDataAdapter(sql,mySqlConnection)
 sda.Fill(dataset,"database ");
}
这样执行起来速度很慢,请教如何更新才能提高速度,谢谢! --------------------编程问答-------------------- 你的for循环的i没用到啊

你把所有的数据先放入dataset,然后执行一次查询就可以了 --------------------编程问答-------------------- 静等高手,我这几天也在头疼这个事情,大爷的,EDI850文档,让存到数据库 --------------------编程问答-------------------- 放到一个块处理 分号隔开 --------------------编程问答-------------------- update .....
update .....
string sql =  "update....."
sql += " update...."  
可以直接写在一起。回车或者空格分隔就行。避免了打开和关闭数据库等一些操作。 --------------------编程问答-------------------- 可以考虑使用批量更新的方法,自己google,关键字是:C# 批量更新 --------------------编程问答-------------------- --------------------编程问答-------------------- 楼主你这样做肯定慢了,因为Fill方法在开始调用之前会打开一次连接,调用之后会关闭该连接,下次调用时再次打开。就好像你给你女朋友打电话,说完一句话就挂机,然后重拨,这样速度肯定不行喽。所以你应该一次性将要进行的数据库操纵命令构造好,然后再才开始执行


StringBuilder builder = new StringBuilder();
for(int i=0;i<60;i++)
{
    builder.Append("update database set tem1='"tt"'");
}
builder.Append("go");

using(SqlConnection mySqlConnection=new SqlConnection (sqlstr))
{
   SqlCommand cmd = new SqlCommand(builder.ToString(), mySqlConnection);
   mySqlConnection.Open();

   cmd.ExecuteNonQuery();
}

--------------------编程问答-------------------- builder.Append("update database set tem1='"tt"'; ");//在最后加上分号
--------------------编程问答-------------------- 建议不用dataset和sqldataadapter,改用IList<T>和sqldatareader效率会更好~ --------------------编程问答-------------------- //将SqlDataReader 数据集转化为datatbale ,在将datatable 转化为iList

       public IList GetModelList(string tablename, string where)
         {           
             IList list = null;
             DataTable dataTable = new DataTable();
             string sql = "select * from " + tablename;
             if (where != "")
             {
                 sql += " Where " + where;
             }
             try
             {
                 System.Data.SqlClient.SqlDataReader dr = DbHelperSQL.ExcuteReader(sql);                 
                 for (int i = 0; i < dr.FieldCount; i++)
                 {
                     DataColumn mydc = new DataColumn();    //关键的一步
                     mydc.DataType = dr.GetFieldType(i);
                     mydc.ColumnName = dr.GetName(i);
                     dataTable.Columns.Add(mydc);          //关键的第二步
                 }
                 while (dr.Read())
                 {
                     DataRow mydr = dataTable.NewRow();     //关键的第三步
                     for (int i = 0; i < dr.FieldCount; i++)
                     {
                         mydr[i] = dr[i].ToString();
                     }
                     dataTable.Rows.Add(mydr);            //关键的第四步
                     mydr = null;
                 }
                 dr.Close();
                 list = dataTable as IList;
                 return (list);

             }
             catch (Exception ex)
             {
                 throw ex;
             }            
         }
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,