大量数据插入数据库问题?希望高手帮忙!

pkkfaii 2006-11-28 10:51:34
数据是从execl中读取到dataset中。想用程序将dataset中的数据一次性插入到数据库中,该如何操作?? 不要问为什么不把数据直接从execl中导入数据库,因为数据库服务和web服务器是两个服务器。。
...全文
164 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaocaotongtong1 2006-11-28
  • 打赏
  • 举报
回复
同意liq330(泉水叮咚) 所说,最好使用sp,这样效率会更高
pkkfaii 2006-11-28
  • 打赏
  • 举报
回复
public DataSet UpdateByDataSet(DataSet ds,string strTblName)
{

SqlConnection conn = this.GetMyConn();

SqlCommand myCommand = new SqlCommand("select * from " + strTblName,conn);

SqlDataAdapter myAdapter = new SqlDataAdapter(myCommand);


SqlCommandBuilder myCommandBuilder = new SqlCommandBuilder(myAdapter);
//
myAdapter.InsertCommand = myCommandBuilder.GetInsertCommand();

// myAdapter.UpdateCommand = myCommandBuilder.GetUpdateCommand();

// myAdapter.DeleteCommand = myCommandBuilder.GetDeleteCommand();

try
{
lock(this) //处理并发情况(分布式情况)
{
conn.Open();

int i = myAdapter.Update(ds,strTblName);

conn.Close();
conn.Dispose();
}
return ds; //数据集的行状态在更新后会都变为: UnChange,在这次更新后客户端要用返回的ds
}
catch(Exception err)
{

conn.Close();
conn.Dispose();
// throw new BusinessException(err);

return ds=null;
}
}
在网上找到个方法,但是用了不好使
linxiwoaini 2006-11-28
  • 打赏
  • 举报
回复
跟着UP
不知道
liq330 2006-11-28
  • 打赏
  • 举报
回复
我上回做的是10秒钟要插入35条记录。每十秒钟更新一次。也就是动态的获取网络上的数据,插入到数据库中。感觉还好。
pkkfaii 2006-11-28
  • 打赏
  • 举报
回复
如果上千条 或更多 不会很慢吗。。还有可能超时
liq330 2006-11-28
  • 打赏
  • 举报
回复
循环DataSet中的一个表。然后获取表中的每一列。

一行的时候就可以写一条Insert语句。
liq330 2006-11-28
  • 打赏
  • 举报
回复
我上回也找了好久,没有更好的办法。不知道别人有没有更好的办法。
pkkfaii 2006-11-28
  • 打赏
  • 举报
回复
liq330(泉水叮咚)
请问你是怎么做。。可以把方法提供一下吗。。谢谢了
liq330 2006-11-28
  • 打赏
  • 举报
回复
for(int i=35;i>=0;i--)
{

//查找DataSet中的值
string pzid=Convert.ToString(ds.Tables[0].Rows[i][0]);

string date=string.Format("{0:HH:mm:ss}",(ds.Tables[0].Rows[i][9]));
string pzName=PzName[i];

string kpj=Convert.ToString(ds.Tables[0].Rows[i][2]);
string zgj=Convert.ToString(ds.Tables[0].Rows[i][3]);
string zdj=Convert.ToString(ds.Tables[0].Rows[i][4]);
string zrj=Convert.ToString(ds.Tables[0].Rows[i][5]);
string zd=Convert.ToString(ds.Tables[0].Rows[i][6]);
string mrj=Convert.ToString(ds.Tables[0].Rows[i][7]);
string mcj=Convert.ToString(ds.Tables[0].Rows[i][8]);
string sj=Convert.ToString(ds.Tables[0].Rows[i][10]);
string NowDate=DateTime.Now.ToString("yyyy/MM/dd");


sqlText +="insert into waihui values('"+pzid+"','"+pzName+"','"+date+"','"+kpj+"','"+zgj+"','"+zdj+"','"+zrj+"','"+zd+"','"+mrj+"','"+mcj+"','"+sj+"','"+NowDate+"')";

}
//连接数据库
SqlConnection conn1=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);
conn1.Open();


SqlCommand cmd=new SqlCommand();

cmd.CommandText=sqlText;
cmd.Connection=conn1;
cmd.ExecuteNonQuery();
}
//关闭连接
conn1.Close();
pkkfaii 2006-11-28
  • 打赏
  • 举报
回复
循环效率太低了。。数据可能会很多,,
liq330 2006-11-28
  • 打赏
  • 举报
回复
我做过。可行。
liq330 2006-11-28
  • 打赏
  • 举报
回复
循环DataSet,每一条生成一个insert语句。定义一个字符串,然后累加这些查询语句,然后一次性操作。
dali168 2006-11-28
  • 打赏
  • 举报
回复
友情UP

62,039

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧