for (int x = 0; x < List.Count; x++)   
 {   ......
   sql=INSERT INTO aaa(a_id) values ("+id+") SELECT SCOPE_IDENTITY();
    for (int y = 0; y < List_1.Count; y++) 
{
            ........
          sql_1=insert into bbb (b_id)  VALUES ("+getid+"); //此处要取上面sql语句插入时的自动增量ID
          }
    for (int z=0; z<list_2.Count; z++))
         {
             ........
          sql_2=insert into ccc (c_id) values ("+getid+"); //此处要取上面sql语句插入时的自动增量ID         }  
}事务处理部分我是这样写的
public  bool ExeSqlTrans(string[] sqlArr)
{
   string strChSql;
         SqlConnection conn = new SqlConnection(Cnnect) 
{    conn.Open();
  SqlTransaction SqlTrans=conn.BeginTransaction();
 SqlCommand cmd=conn.CreateCommand();
 cmd.Transaction=SqlTrans;
        try
{
  for(int i=0;i<sqlArr.Length;i++)
  {
strChSql=sqlArr[i];
cmd.CommandText =strChSql;
cmd.ExecuteNonQuery();
}
SqlTrans.Commit();
return true;
}
catch
{
SqlTrans.Rollback();
return false;
}
finally 
{
}
}}
那么我如何把上面的的for循环的sql语句全填到string[] 中应该怎么写呢?怎么初始化数组的大小?    另外sql_1和sql_2怎么取得sql中的自动增量ID?

解决方案 »

  1.   

    建议使用数据库级的事务来处理,而不是使用程序级的事务来处理.下面的例子可以参考下.
    http://community.csdn.net/Expert/topic/4191/4191899.xml?temp=.7712671
      

  2.   

    sql=INSERT INTO aaa(a_id) values ("+id+") SELECT @@IDENTITY
    那么
    sql_1=insert into bbb (b_id)  VALUES ("+?????+");这个地方怎么写?
      

  3.   

    数据库级的事务执行效率高,而且安全.
    http://community.csdn.net/Expert/topic/4143/4143279.xml?temp=.7899591
      

  4.   

    另外 如果用存储过程 循环语句中的List是ArrayList. ArrayList如何向存储过程填参数?
      

  5.   

    你上面ArrayList没用到的,如果能换一种思路最好了.
      

  6.   

    insert into yourtable(aa,bb)values('aa','bb') select @@identity