如何利用一个连接连续插入多条记录?

TrojanSckiss 2005-07-05 05:24:56
我现在是每打开一次数据库连接插入一个记录,效率很低。谢谢大家。我只有40分。
...全文
188 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
TrojanSckiss 2005-07-06
  • 打赏
  • 举报
回复
这么热心的人 我怎么给分啊?
WeekZero 2005-07-06
  • 打赏
  • 举报
回复
多条记录一次操作修改的要加事务处理的,可以在程序中加,也可以在sql中加
给你个在程序中加的例子:
string flag="";
SqlConnection conn = new SqlConnection();
conn.ConnectionString = ConfigurationSettings.AppSettings["ConnStr"];
if (conn.State.ToString() == "Closed")
{
conn.Open();
}

SqlTransaction myTrans;//
myTrans = conn.BeginTransaction(IsolationLevel.ReadCommitted,"SampleTransaction");//

SqlCommand comm = new SqlCommand();
comm.Connection = conn ;
comm.Transaction=myTrans;//

try
{
comm.CommandText = "delete from test where id=91" ;
comm.ExecuteNonQuery ();

comm.CommandText = "delete from test where id=92" ;
comm.ExecuteNonQuery ();

myTrans.Commit();//
flag="1";
}
catch(Exception ep)
{
myTrans.Rollback("SampleTransaction");//
flag="0";
Page.Response.Write(ep.Message.ToString()+"<br>");
}

if (conn.State.ToString() == "Open")
{
conn.Close();
}
conn.Dispose();

if(flag.CompareTo("1")==0)
{
Page.Response.Write("事务成功!");
}
else if(flag.CompareTo("0")==0)
{
Page.Response.Write("事务失败!");
}
liuqm 2005-07-06
  • 打赏
  • 举报
回复
可以写多条插入语句,如果你想每条语句都相互关联,那么可以加上事务处理。

-------------------------------------------------------------------------------

这倒不失为一个好的方法
vzxq 2005-07-06
  • 打赏
  • 举报
回复
用 StringBuild把insert语句,连起来一次性提交(加事事务处理)
lovewindy 2005-07-06
  • 打赏
  • 举报
回复
foreach(OrderItemInfo item in myOrder.OrderItems)
{
//orderID,spbm,sl,kpj,pfj,jsj,pj
//strSQL = strSQL + SQL_ADD_ITEM + " @ID " + ",@spbm"+i + ",@sl"+i + ",@kpj"+i + ",@pfj"+i + ",@jsj"+i + ",@pj"+i +"); SELECT @ERR=@ERR+@@ERROR;";
strSQL = strSQL + SQL_ADD_ITEM + " @ID " + ",@spbm"+i + ",@sl"+i +"); SELECT @ERR=@ERR+@@ERROR;";

itemParms = GetInsertItemParms(i);

itemParms[0].Value = item.spbm;
itemParms[1].Value = item.sl;
// itemParms[2].Value = item.kpj;
// itemParms[3].Value = item.pj;
// itemParms[4].Value = item.jsj;
// itemParms[5].Value = item.bz;

foreach (SqlParameter parm in itemParms)
cmd.Parameters.Add(parm);

i++;
}

conn.Open();
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = strSQL + "SELECT @ID,@ERR ";

using(SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
{
rdr.Read();

if(rdr.GetInt32(1) != 0)
throw new Exception("系统在增加订货单过程中出错!");

orderId = rdr.GetInt32(0);
}

cmd.Parameters.Clear();

我在做一个进销存系统中也遇到这个问题,就是订单与订单内项,一张订单里有N条项,要一起插入数据库,
上面就是其中的一段代码,希望对你有用,
其实也就是动态SQL,生成N条插入语句,然后连起来执行,
tigerwen01 2005-07-06
  • 打赏
  • 举报
回复
可以写多条插入语句,如果你想每条语句都相互关联,那么可以加上事务处理。
s7684 2005-07-06
  • 打赏
  • 举报
回复
这个连接没什么关系,你用daab来操作吧,可以省去你好多麻烦
TrojanSckiss 2005-07-06
  • 打赏
  • 举报
回复
ExecuteNonQuery()这样做好象并没有共享数据连接.
cqzw100 2005-07-05
  • 打赏
  • 举报
回复
comm.CommandText = "insert 1; insert2; ...";
try{
Comm.ExecuteNonQuery();
}
postfix2 2005-07-05
  • 打赏
  • 举报
回复
SqlParameter[] arrParam;

循环ExecuteNonQuery()
renyu732 2005-07-05
  • 打赏
  • 举报
回复
conn为Public
循环执行你的Comm.ExecuteNonQuery()
jinzhouk 2005-07-05
  • 打赏
  • 举报
回复
首先建立好一个Command,然后再循环中设定Value,执行ExecNonQuery就可以了。

62,046

社区成员

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

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

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

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