我现在是每打开一次数据库连接插入一个记录,效率很低。谢谢大家。我只有40分。

解决方案 »

  1.   

    首先建立好一个Command,然后再循环中设定Value,执行ExecNonQuery就可以了。
      

  2.   

    conn为Public
    循环执行你的Comm.ExecuteNonQuery()
      

  3.   

    SqlParameter[] arrParam;循环ExecuteNonQuery()
      

  4.   

    comm.CommandText = "insert 1; insert2; ...";
    try{
    Comm.ExecuteNonQuery();
    }
      

  5.   

    ExecuteNonQuery()这样做好象并没有共享数据连接.
      

  6.   

    这个连接没什么关系,你用daab来操作吧,可以省去你好多麻烦
      

  7.   

    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条插入语句,然后连起来执行,
      

  8.   

    用 StringBuild把insert语句,连起来一次性提交(加事事务处理)
      

  9.   

    多条记录一次操作修改的要加事务处理的,可以在程序中加,也可以在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("事务失败!");
    }