插入速度太慢,代码能否优化
try
{
sd.openDatabase();
///得到查询结果
DataSet dsWaitS = sd.GetData("Select * from GW_QMobile","GW_QMobile");
///生成随机数组
int[] random = ZHJsys.BuildRandom.GetRandomArray(dsWaitS.Tables[0].Rows.Count + 1000,0,int.MaxValue); StringBuilder sql = new StringBuilder(144);
this.pbgState.Maximum = dsWaitS.Tables[0].Rows.Count;
for( int i = 0 ;i < dsWaitS.Tables[0].Rows.Count ;i++ )
{
///插入记录
sql.Append(@"insert GW_QWaitMobile(RandomNum,Mobile) values(");
sql.Append(random[i]);
sql.Append(",'");
sql.Append(dsWaitS.Tables[0].Rows[i]["QMobile"].ToString());
sql.Append("')"); sd.exeOrder(sql.ToString());
Thread.Sleep(25); ///由于数据量大每条记录插入后,阻塞25毫妙
sql.Remove(0,sql.Length); this.pbgState.PerformStep();
}
}
catch(Exception ex)
{
this.Text = ex.Message;
}
finally
{
sd.closeDatabase();
}
try
{
sd.openDatabase();
///得到查询结果
DataSet dsWaitS = sd.GetData("Select * from GW_QMobile","GW_QMobile");
///生成随机数组
int[] random = ZHJsys.BuildRandom.GetRandomArray(dsWaitS.Tables[0].Rows.Count + 1000,0,int.MaxValue); StringBuilder sql = new StringBuilder(144);
this.pbgState.Maximum = dsWaitS.Tables[0].Rows.Count;
for( int i = 0 ;i < dsWaitS.Tables[0].Rows.Count ;i++ )
{
///插入记录
sql.Append(@"insert GW_QWaitMobile(RandomNum,Mobile) values(");
sql.Append(random[i]);
sql.Append(",'");
sql.Append(dsWaitS.Tables[0].Rows[i]["QMobile"].ToString());
sql.Append("')"); sd.exeOrder(sql.ToString());
Thread.Sleep(25); ///由于数据量大每条记录插入后,阻塞25毫妙
sql.Remove(0,sql.Length); this.pbgState.PerformStep();
}
}
catch(Exception ex)
{
this.Text = ex.Message;
}
finally
{
sd.closeDatabase();
}
using System.Data;
using System.Data.SqlClient;namespace SQLDATA
{
/// <summary>
/// ClassZoneSQL 的摘要说明。
/// </summary>
public class ClassZoneSQL
{
//private ConnString myConnString;
static System.Data.SqlClient.SqlConnection cn;
private System.Data.SqlClient.SqlDataAdapter da;
public ClassZoneSQL()
{
//
// TODO: 在此处添加构造函数逻辑
//
//myConnString=new ConnString();
cn=new SqlConnection();
cn.ConnectionString=ConnString.ConnectString;
da=new SqlDataAdapter();
//cn.Open();
}
public System.Data.DataTable DataList()
{
cn.Open();
da.SelectCommand =CreateSeleteCommand();
DataTable returnTB=new DataTable();
da.Fill(returnTB);
cn.Close();
returnTB.PrimaryKey =new DataColumn[]{ returnTB.Columns["ZoneID"]};
return returnTB;
}
public int DataEdit(System.Data.DataTable myTB)
{
cn.Open();
// da.UpdateCommand =CreateUpdateCommand();
// da.InsertCommand =CreateInsertCommand();
// da.DeleteCommand =CreateDeleteCommand();
// da.Update(myTB);
SqlCommand cmdUpdate=CreateUpdateCommand();
SqlCommand cmdInsert=CreateInsertCommand();
SqlCommand cmdDelete=CreateDeleteCommand();
DataViewRowState dvrs;
dvrs=DataViewRowState.ModifiedCurrent|DataViewRowState.Added|DataViewRowState.Deleted;
int myretu=0;
foreach(DataRow row in myTB.Select("","",dvrs))
{
switch(row.RowState)
{
case DataRowState.Modified:
myretu=SubmitUpdate(row,cmdUpdate);
break;
case DataRowState.Added:
myretu=SubmitInsert(row,cmdInsert);
break;
case DataRowState.Deleted:
myretu=SubmitDelete(row,cmdDelete);
break;
}
}
cn.Close();
return myretu;
}
static System.Data.SqlClient.SqlCommand CreateSeleteCommand()
{
string strSQL;
strSQL="SELECT * FROM [Zone] WHERE DelBJ = '0' ";
System.Data.SqlClient.SqlCommand cmd=new SqlCommand(strSQL,cn);
return cmd;
}
static System.Data.SqlClient.SqlCommand CreateUpdateCommand()
{
string strSQL;
strSQL="UPDATE [Zone] SET ZoneName = @ZoneName_New ,DelBJ = @DelBJ_New WHERE ZoneID=@ZoneID_Orig";
System.Data.SqlClient.SqlCommand cmd=new SqlCommand(strSQL,cn);
System.Data.SqlClient.SqlParameterCollection pc=cmd.Parameters;
pc.Add("@ZoneName_New",System.Data.SqlDbType.VarChar,20);
pc.Add("@DelBJ_New",System.Data.SqlDbType.Bit,1);
System.Data.SqlClient.SqlParameter param;
param=pc.Add("@ZoneID_Orig",System.Data.SqlDbType.Decimal,9);
param.SourceVersion=DataRowVersion.Original;
return cmd;
}
static System.Data.SqlClient.SqlCommand CreateInsertCommand()
{
string strSQL;
strSQL="INSERT INTO [Zone] (ZoneName) VALUES ( @ZoneName_New)";
System.Data.SqlClient.SqlCommand cmd=new SqlCommand(strSQL,cn);
System.Data.SqlClient.SqlParameterCollection pc=cmd.Parameters;
pc.Add("@ZoneName_New",System.Data.SqlDbType.VarChar,20);
return cmd;
}
static System.Data.SqlClient.SqlCommand CreateDeleteCommand()
{
string strSQL;
strSQL="DELETE FROM [Zone] WHERE ZoneID =@ZoneID_Orig";
System.Data.SqlClient.SqlCommand cmd=new SqlCommand(strSQL,cn);
System.Data.SqlClient.SqlParameterCollection pc=cmd.Parameters;
System.Data.SqlClient.SqlParameter param;
param=pc.Add("@ZoneID_Orig",System.Data.SqlDbType.Decimal,9);
param.SourceVersion=DataRowVersion.Original;
return cmd;
}
static int SubmitUpdate(DataRow row,SqlCommand cmd)
{
SqlParameterCollection pc=cmd.Parameters;
pc["@ZoneName_New"].Value =row["ZoneName"].ToString();
pc["@DelBJ_New"].Value =System.Convert.ToBoolean(row["DelBJ"]);
pc["@ZoneID_Orig"].Value =System.Convert.ToDecimal(row["ZoneID",DataRowVersion.Original]);
try
{
return cmd.ExecuteNonQuery();
}
catch
{
return 0;
}
}
static int SubmitInsert(DataRow row,SqlCommand cmd)
{
SqlParameterCollection pc=cmd.Parameters;
pc["@ZoneName_New"].Value =row["ZoneName"].ToString();
try
{
return cmd.ExecuteNonQuery();
}
catch
{
return 0;
}
}
static int SubmitDelete(DataRow row,SqlCommand cmd)
{
SqlParameterCollection pc=cmd.Parameters;
pc["@ZoneID_Orig"].Value =System.Convert.ToDecimal(row["ZoneID",DataRowVersion.Original]);
try
{
return cmd.ExecuteNonQuery();
}
catch
{
return 0;
}
}
}
}