sql语句,插入多条记录

zhenghh 2009-03-18 03:57:12
一个按钮需要响应8条sql插入语句,如果每次执行一条,需要设8个变量,执行8次,效率太低,怎么做比较好
"insert into takecard (name,time,mianzhi,shuliang) values ('"+TextBox9.Text+"',getdate(),'20','"+TextBox1.Text+"')";
"insert into takecard (name,time,mianzhi,shuliang) values ('" + TextBox9.Text + "',getdate(),'30','" + TextBox2.Text + "')
"insert into takecard (name,time,mianzhi,shuliang) values ('" + TextBox9.Text + "',getdate(),'50','" + TextBox3.Text + "')";
"insert into takecard (name,time,mianzhi,shuliang) values ('" + TextBox9.Text + "',getdate(),'100','" + TextBox4.Text + "')";
"insert into takecard (name,time,mianzhi,shuliang) values ('" + TextBox9.Text + "',getdate(),'200','" + TextBox5.Text + "')";
"insert into takecard (name,time,mianzhi,shuliang) values ('" + TextBox9.Text + "',getdate(),'500','" + TextBox6.Text + "')";
"insert into takecard (name,time,mianzhi,shuliang) values ('" + TextBox9.Text + "',getdate(),'1000','" + TextBox7.Text + "')";
"insert into takecard (name,time,mianzhi,shuliang) values ('" + TextBox9.Text + "',getdate(),'10000','" + TextBox8.Text + "')";
...全文
3790 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
plentygirl 2011-04-08
  • 打赏
  • 举报
回复
可以试试这种
语法:
insert into `ttt`
select '001','语文' union all
select '002','数学' union all
select '003','英语';

改后:
string strSQL;
strSQL = "insert into takecard (name,time,mianzhi,shuliang)";
strSQL +=" select '"+TextBox9.Text+"',getdate(),'20','"+TextBox1.Text+"' union all";
strSQL +=" select '" + TextBox9.Text + "',getdate(),'30','" + TextBox2.Text + "' union all";
strSQL +=" select '" + TextBox9.Text + "',getdate(),'50','" + TextBox3.Text + "' union all";
strSQL +=" select '" + TextBox9.Text + "',getdate(),'100','" + TextBox4.Text + "' union all";
strSQL +=" select '" + TextBox9.Text + "',getdate(),'200','" + TextBox5.Text + "' union all";
strSQL +=" select '" + TextBox9.Text + "',getdate(),'500','" + TextBox6.Text + "' union all";
strSQL +=" select '" + TextBox9.Text + "',getdate(),'1000','" + TextBox7.Text + "' union all";
strSQL +=" select '" + TextBox9.Text + "',getdate(),'10000','" + TextBox8.Text + "';";
加油馒头 2009-08-14
  • 打赏
  • 举报
回复
8条语句 对效率方面影响没那么大吧

用个循环

你如果实在要用,那就批量插入,不过感觉没什么必要

因为你的语句不多

我用批量插入 是一次 要执行2千多条 插入语句的
cder2008 2009-08-14
  • 打赏
  • 举报
回复
这样符不符合你的要求我就不知道了
cder2008 2009-08-14
  • 打赏
  • 举报
回复
string SqlStr = " Insert Into Table values('1') "
SqlStr += " Insert Into Table values('2') "
SqlStr += " Insert Into Table values('3') "
SqlCommand SqlCmdInSert = new SqlCommand(SqlStr,Connection)
SqlCmdInSert.ExecuteNonQuery()

楼主借鉴一下这个的....不过好像执行速度快不了多少啊
xfreyes 2009-03-18
  • 打赏
  • 举报
回复
效率是差不多的。。。
就是你这么写可扩展性太差,写起来操作性也差,照楼上的写个循环就行了
bj890 2009-03-18
  • 打赏
  • 举报
回复
一个存储过程
循环添加
mylibin 2009-03-18
  • 打赏
  • 举报
回复
先把所有数据放到DataTable中
然后使用SqlBulkCopy类的WriteSoServer方法添加到数据库
性能比较好 要比用for循环插入数据库多次好的多
不会用可以google 或到msdn上看看
anyueyang1986 2009-03-18
  • 打赏
  • 举报
回复
看看呢,同样的问题需要解决
llsen 2009-03-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zzxap 的回复:]
C# code
SQLCONNECTION CON=NEW SQLCONNECTION(" ")
CON.OPEN

for (int i=1,i<8,i++)
{
string stra = "TextBox"+i.tostring() ;
TextBox TextBoxa = (TextBox)this.FindControl(stra);
string sql1="insert into takecard (name,time,mianzhi,shuliang) values ('"+TextBox9.Text+"',getdate(),'20','"+TextBoxa.Text+"')";

sqlcommand cmd=new sqlcommand(sql1,CON)
cmd.executescalar()
}
[/Quote]

代码能少很多
sjt000 2009-03-18
  • 打赏
  • 举报
回复
mark
Programmer_Medium 2009-03-18
  • 打赏
  • 举报
回复
SqlBulkCopy
springbell 2009-03-18
  • 打赏
  • 举报
回复
瞄一个 - -!
zzxap 2009-03-18
  • 打赏
  • 举报
回复
[code=SQL]
create proc aa
(
@a varchar(100),
@b varchar(100),
)
declare @sql varchar(4000)
as
set @sql=' insert into takecard (name,time,mianzhi,shuliang) values (@a,getdate(),'20',@b) '

exec @sql
go
[/CODE]
liuyeede 2009-03-18
  • 打赏
  • 举报
回复
构造一个DataTable,将TextBox的值添加到DataTable,使用SqlBulkCopy批量copy到目标数据库的表中。详细用法查看msdn。
zzxap 2009-03-18
  • 打赏
  • 举报
回复
[code=C#]
SQLCONNECTION CON=NEW SQLCONNECTION(" ")
CON.OPEN

for (int i=1,i<8,i++)
{
string stra = "TextBox"+i.tostring() ;
TextBox TextBoxa = (TextBox)this.FindControl(stra);
string sql1="insert into takecard (name,time,mianzhi,shuliang) values ('"+TextBox9.Text+"',getdate(),'20','"+TextBoxa.Text+"')";

sqlcommand cmd=new sqlcommand(sql1,CON)
cmd.executescalar()
}
[/CODE]
zzxap 2009-03-18
  • 打赏
  • 举报
回复
[code=C#]
SQLCONNECTION CON=NEW SQLCONNECTION(" ")
CON.OPEN

for (int i=1,i<8,i++)
{
string stra = "TextBox"+i.tostring() ;
TextBox TextBoxa = (TextBox)this.FindControl(stra);
string sql1="insert into takecard (name,time,mianzhi,shuliang) values ('"+TextBox9.Text+"',getdate(),'20','"+TextBoxa.Text+"')";

sqlcommand cmd=new sqlcommand(sql1,CON)
cmd.executescalar()
}
[CODE=C#]
zhenghh 2009-03-18
  • 打赏
  • 举报
回复
需要用存储过程的话,应该怎么写呢?

62,046

社区成员

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

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

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

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