CS代码
string txtItem = Request.Form["txtItem"];
string[] items = txtItem.Split(',');
string[] sqlTrans = new string[items.Length];
int id = Convert.ToInt32(SqlHelper.executeScalar("select Max(ID) from VoteTitles", CommandType.Text, null));
for (int i = 0; i < items.Length; i++)
{
   if (items[i].Length != 0)
   {
      sqlTrans[i] = "insert into VoteItems(VoteItem,ID) values('" + items[i] + "','" + id + "')";
   }
}
   if (SqlHelper.executeTrans(sqlTrans))
   {
      Response.Redirect("VoteShow.aspx");
   }事务代码
public static bool executeTrans(string[] sqlTrans)
    {
        bool flag = false;
        using (SqlConnection con = new SqlConnection(sqlcon))
        {
            con.Open();
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = con;
            SqlTransaction trans = con.BeginTransaction();
            try
            {
                foreach (string sql in sqlTrans)
                {
                    cmd.Transaction = trans;
                    cmd.CommandText = sql;
                    cmd.ExecuteNonQuery();
                }
                trans.Commit();
                flag = true;
            }
            catch (Exception)
            {
                trans.Rollback();
                flag = false;
            }
            return flag;
        }
    }前台是动态添加的  文本框
根据内容写入数据库
运行的时候
说我COMMANDTEXT没有初始化
我怀疑是不是局部变量的问题,帮我看一下吧,谢谢

解决方案 »

  1.   

    在sqlTrans[i] = "insert into VoteItems(VoteItem,ID) values('" + items[i] + "','" + id + "')";
    处设置个断点看看,每次赋的值,或者说有没有执行赋值的操作。
      

  2.   

    看看  txtItem 取到数据了没有~~
      

  3.   

    sqlTrans[i] = "insert into VoteItems(VoteItem,ID) values('" + items[i] + "','" + id + "')";
    这个应该是int类型的,单引号去掉试试,你这里是当作字符串了
      

  4.   

    txtItem  值是多少 ??   是不是  , 结尾??
    如果是的话  txtItem[...]的最后一项是空  , 可能就是 没有初始化的原因。sqlTrans 跟 txtItem  长度一样  所以 即使 if (items[i].Length != 0)判断了 sqlTrans 最后一项也是空。另外  cmd.Transaction = trans  可以提到循环外。希望对你有帮助!
      

  5.   


    txtItem的值是用户输入的内容(文本框由用户自己动态添加)
    用逗号来分格
    取出后
    写入数据库
    另外数据都取出来了
    断点也试了还是不知道哪里有错
    sqlTrans[i]他是为NULL
    可他右面的字符串都取出来了啊
      

  6.   

    txtItem 逗号分隔  是怎么拼加的 ??   或者说 txtItem 的最后一个字符是不是 逗号??
      

  7.   

    我和阁下私聊
    阁下没收到信息?
    CSDN又不行了
      

  8.   

    最好在从Form获取值之前判断一下该控件的值是否为空,这样才能增加程序的严密性。
      

  9.   

    判断参数是否为空就行,不空就执行事务。
    if(Request.Form["txtItem"] != null)
    {
        // 执行你的代码
    }
      

  10.   

    ArrayList 代替 string[] sqlTrans  ; if(....)就管用了
      

  11.   

    谢谢各位,已经解决
    特加100分
    yangxueke
    到新帖子来领100分
      

  12.   

    你设置段点,一步一步的调试,我想应该是你string[] sqlTrans  这里出错了。