求一个数据操作时的优化 有A库中表a,B库中表b。将a表中数据取出插入到b表,成功则删除a表中相应的记录。每次插入数据时动态更换连接字符串为A库连接,删除时则改为B库连接,连接字符串为一静态变量。现在问题是速度很慢,请问各位怎么让速度变快点,谢谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 insert into [B].[dbo].[b](field) select [A].[dbo].[a] 怎么还要更改数据库连接?你是从serverA到serverB? 刚按你说的第一条改了下,速度还是慢。贴一段代码,大家看看有啥问题没 //循环要同步的表 foreach (string key in tablesList) { string tableName = key; //得到要同步的数据 string sqlString = string.Format("Select Top 100 * From {0} Order By {1} asc", tableName, primaryName); dataAdapter = new SqlDataAdapter(sqlString, A表连接); DataSet ds = new DataSet(); dataAdapter.Fill(ds); DataTable dataTable = ds.Tables[0]; try { StringBuilder insertString = new StringBuilder(); //循环要同步数据的行 foreach (DataRow dataRow in dataTable.Rows) { insertString.Append(" insert into " + tableName + " values("); //循环要同步的数据的列 foreach (DataColumn dataColumn in dataTable.Columns) { // 如果为int型则不需要再SQL语句中加单引号 if (dataColumn.DataType == System.Type.GetType("System.Int32")) { insertString.Append(dataRow[dataColumn.ColumnName]); } else //否则加上单引号 { insertString.Append("'"); insertString.Append(dataRow[dataColumn.ColumnName]); insertString.Append("'"); } insertString.Append(","); } //移除最后一个多余的逗号 insertString.Remove(insertString.Length - 1, 1); insertString.Append(")"); if (OperData(insertString.ToString(), B表连接)) { string deleteString = "Delete From " + tableName + " Where " + primaryName + "=" + dataRow[primaryName]; OperData(deleteString, A表连接); } } } catch (Exception exception) { } 批量数据操作SqlBulkCopy 或读取数据到数据集,sqldataadapter连接字符串到config文件,资源释放using也可在sql server实现 access 数据库查询:在数据库中可查到结果,用代码查询时却查不到?? C#如何在托盘处弹出一个气泡框 进程被占用,请教 正则表达式能不能用默认值 如何根据控件的所有属性,生成一个控件的相同拷贝??在线等待,高手指点!!! 求教 如何循环执行反序列化JSON的值 Windows下有没有类似与ar -t,lld 命令。这类这类可以查看连接库东东 如何确定在listbox的多选项?急!!! 请教:如何获得记录集的行数? UI测试录制时,提示访问被拒绝 SQL 向EXCEL进程发送windows消息
贴一段代码,大家看看有啥问题没
//循环要同步的表
foreach (string key in tablesList)
{
string tableName = key;
//得到要同步的数据
string sqlString = string.Format("Select Top 100 * From {0} Order By {1} asc", tableName, primaryName);
dataAdapter = new SqlDataAdapter(sqlString, A表连接);
DataSet ds = new DataSet();
dataAdapter.Fill(ds);
DataTable dataTable = ds.Tables[0]; try
{
StringBuilder insertString = new StringBuilder();
//循环要同步数据的行
foreach (DataRow dataRow in dataTable.Rows)
{
insertString.Append(" insert into " + tableName + " values("); //循环要同步的数据的列
foreach (DataColumn dataColumn in dataTable.Columns)
{
// 如果为int型则不需要再SQL语句中加单引号
if (dataColumn.DataType == System.Type.GetType("System.Int32"))
{
insertString.Append(dataRow[dataColumn.ColumnName]);
}
else //否则加上单引号
{
insertString.Append("'");
insertString.Append(dataRow[dataColumn.ColumnName]);
insertString.Append("'");
} insertString.Append(",");
} //移除最后一个多余的逗号
insertString.Remove(insertString.Length - 1, 1);
insertString.Append(")"); if (OperData(insertString.ToString(), B表连接))
{
string deleteString = "Delete From " + tableName + " Where " + primaryName + "=" + dataRow[primaryName]; OperData(deleteString, A表连接);
}
}
}
catch (Exception exception)
{
}
或读取数据到数据集,sqldataadapter
连接字符串到config文件,资源释放using
也可在sql server实现