批量修改数据速度慢的问题。

zhongxingqiche 2009-04-29 09:40:46
由于业务的需要,我要一次在表中修改1300条左右的数据,将其中两个字段的值改变了。具体的语句如下:

public void jz(string ztid, string nian, string yue)
{

using (SqlConnection conn = new SqlConnection())
{
conn.ConnectionString = SqlHelper.ConnectionStringLocalTransaction;

string sqlstr = "update ks_gz set sfdj=0,sfwc=1 where ztid='"+ztid+"' and nian='"+nian+"' and yue='"+yue+"'";

SqlCommand sqlcom = new SqlCommand(sqlstr, conn);
sqlcom.CommandTimeout = 0;
conn.Open();
sqlcom.ExecuteNonQuery();
conn.Close();
}


}


我延长了请求的时间,但是还是很慢而且不成功,但是在SQL2000的查询分析其中可以成功执行。请高手指点迷津。!!谢谢!!!
...全文
299 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhongxingqiche 2009-04-29
  • 打赏
  • 举报
回复
可以了,是我其他的代码设计的有问题,我在修改之前进行了一次检索,影响了速度,我把那个东西去掉就快多了。
感谢浪小子大哥的关注。结贴给给了。
zhongxingqiche 2009-04-29
  • 打赏
  • 举报
回复
多谢冲浪小子大哥,感谢你的关注,我在去试试啊。多谢!!!
中年秃头大叔 2009-04-29
  • 打赏
  • 举报
回复
SqlParameters
中年秃头大叔 2009-04-29
  • 打赏
  • 举报
回复
SqlParameter par = new SqlParameter("@yue",yue);
zzxap 2009-04-29
  • 打赏
  • 举报
回复
//sqlcom.CommandTimeout = 0;


中年秃头大叔 2009-04-29
  • 打赏
  • 举报
回复
存储过程为
create procedure pro_ks_gz(@ztid varchar(100),@nian varchar(100),@yue varchar(100))
as
update ks_gz set sfdj=0,sfwc=1 where ztid=@ztid and nian=@nian and yue=@yue

后台代码为
public void jz(string ztid, string nian, string yue)
{

using (SqlConnection conn = new SqlConnection("server=;database=master;uid=sa;pwd=;")) //连接可以自己定
{
SqlCommand cmd = new SqlCommand("pro_ks_gz", conn);//

cmd.CommandType = CommandType.StoredProcedure;//指定命令类型为存储过程

cmd.Parameters.AddWithValue("@ztid", ztid);
cmd.Parameters.AddWithValue("@nian", nian);
cmd.Parameters.AddWithValue("@yue", yue);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();

}
}
button事件调用代码为
jz("12", "12", "12");//值可以自己定..
我已经度过可以的。
zhongxingqiche 2009-04-29
  • 打赏
  • 举报
回复
12楼的大哥,我换成了

sqlparameters par=new sqlparameters("@ztid",ztid); 
sqlparameters par2=new sqlparameters("@nian",nian);
sqlparameters par3=new sqlparameters("@yue",yue);


但是提示我:

找不到类型或者命名空间。

怎么回事啊!!
zhongxingqiche 2009-04-29
  • 打赏
  • 举报
回复
aaa是我建立的存储过程。如下:

CREATE PROCEDURE aaa
@ztid nvarchar(50),
@nian nvarchar(50),
@yue nvarchar(50)
as
begin
update ks_gz set sfdj=0,sfwc=1 where ztid=@ztid and nian=@nian and yue=@yue
end
GO
zhongxingqiche 2009-04-29
  • 打赏
  • 举报
回复
期待达人出现!!!谢谢!!!
中年秃头大叔 2009-04-29
  • 打赏
  • 举报
回复

那public void jz(string ztid, string nian, string yue)
{

using (SqlConnection conn = new SqlConnection(SqlHelper.ConnectionStringLocalTransaction))
{
SqlCommand cmd = new SqlCommand("aaa", conn);//存储过程为aaa吗?

cmd.CommandType = CommandType.StoredProcedure;//指定命令类型为存储过程

cmd.Parameters.AddWithValue("@ztid", ztid);
cmd.Parameters.AddWithValue("@nian", nian);
cmd.Parameters.AddWithValue("@yue", yue); //参数只要对应好就可以了。
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();

}参数也可以这样
sqlparameters par=new sqlparameters("@ztid",ztid);
sqlparameters par2=new sqlparameters("@nian",nian);
sqlparameters par3=new sqlparameters("@yue",yue);
应该可以的.
}
zhongxingqiche 2009-04-29
  • 打赏
  • 举报
回复
我已经用了存储了,还是不行啊。和sql2000的相应时间有关系吗?
guohouchang 2009-04-29
  • 打赏
  • 举报
回复
修改成存贮过程

执行效率高
zhongxingqiche 2009-04-29
  • 打赏
  • 举报
回复
 public void jz(string ztid, string nian, string yue)
{

using (SqlConnection conn = new SqlConnection())
{
conn.ConnectionString = SqlHelper.ConnectionStringLocalTransaction;




SqlCommand cmd = new SqlCommand("aaa", conn);
cmd.CommandType = CommandType.StoredProcedure;//指定命令类型为存储过程

cmd.Parameters.AddWithValue("@ztid", ztid);
cmd.Parameters.AddWithValue("@nian", nian);
cmd.Parameters.AddWithValue("@yue", yue);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();

}


}


我把方法换成了这个样子还是不行啊!!!
中年秃头大叔 2009-04-29
  • 打赏
  • 举报
回复
using (SqlConnection conn = new SqlConnection())
{
conn.ConnectionString = SqlHelper.ConnectionStringLocalTransaction;

string sqlstr = "update ks_gz set sfdj=0,sfwc=1 where ztid=@ztid and nian=@nian and yue=@yue;
sqlparameters par=new sqlparameters("@ztid",ztid);
sqlparameters par2=new sqlparameters("@nian",nian);
sqlparameters par3=new sqlparameters("@yue",yue);
SqlCommand sqlcom = new SqlCommand(sqlstr, conn);
sqlcom.Commandtype==commandtype.storeprocedure;
sqlcom.ExecuteNonQuery();
}
楼主这么不是在程序里面的,不是存储过程。上面就那三行是的。
zhongxingqiche 2009-04-29
  • 打赏
  • 举报
回复
我试试去!!多谢!!
中年秃头大叔 2009-04-29
  • 打赏
  • 举报
回复
创建一个修改的存储过程。
create procedure pro_ks_gz(@ztid varchar(100),@nian varchar(100),@yue varchar(100))
as
update ks_gz set sfdj=0,sfwc=1 where ztid=@ztid and nian=@nian and yue=@yue

using (SqlConnection conn = new SqlConnection())
{
conn.ConnectionString = SqlHelper.ConnectionStringLocalTransaction;

string sqlstr = "update ks_gz set sfdj=0,sfwc=1 where ztid=@ztid and nian=@nian and yue=@yue;
sqlparameters par=new sqlparameters("@ztid",ztid);
sqlparameters par2=new sqlparameters("@nian",nian);
sqlparameters par3=new sqlparameters("@yue",yue);
SqlCommand sqlcom = new SqlCommand(sqlstr, conn);
sqlcom.Commandtype==commandtype.storeprocedure;
sqlcom.ExecuteNonQuery();
}
上面的语句就可以了。
zhongxingqiche 2009-04-29
  • 打赏
  • 举报
回复
3楼的大哥我试过存储过程了。还是很慢的!!谢谢!!
zhongxingqiche 2009-04-29
  • 打赏
  • 举报
回复
ASP.NET批量修改数据的语句该怎么写?请高手指点啊!!!谢谢!!顶!!
makun0624 2009-04-29
  • 打赏
  • 举报
回复
建议把SQL语句写个存储过程 `
zhongxingqiche 2009-04-29
  • 打赏
  • 举报
回复
急!!请高手指点!!!
加载更多回复(1)

62,267

社区成员

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

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

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

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