protected void Button1_Click(object sender, EventArgs e)
    {        SqlConnection conn = new SqlConnection(ConfigurationManager.AppSettings["constr"]);
        string strsql = "InSert Into [AddWord] (UserName,Email,QQ,Title,Content,Face,AddTime,IP) values ('" + Username.Text + "','" + Email.Text + "','" + QQ.Text + "','" + Title.Text + "','" + FormatString(content.Text) + "','" + Face.SelectedItem.Value + "','" + DateTime.Now + "','" + Request.UserHostAddress + "')";
        conn.Open();
        SqlCommand cmd2 = new SqlCommand(strsql, conn);
        
        try
        {
            cmd2.BeginExecuteNonQuery();
            cmd2.Dispose();
            conn.Close();
            //提交成功,返回显示页面。
            Response.Write("<script>alert('恭喜你,提交成功,感谢您的参与!');parent.location='ForumIndex.aspx'</script>");
        }        catch (System.Data.SqlClient.SqlException)
        {
            //出现错误
            cmd2.Dispose();
            conn.Close();
            conn.Dispose();            //出现提示页面。
            Response.Write("<script>alert('对不起,操作出现错误,请返回!!');parent.location='ForumIndex.aspx'</script>");
        }
    }    private string FormatString(string str)
    {
        str = str.Replace(" ", "&nbsp;&nbsp;");
        str = str.Replace("<", "&lt;");
        str = str.Replace(">", "&gt;");
        str = str.Replace('\n'.ToString(), "<br>");
        return str;
    }点击提交按钮之后,提示 "恭喜你,提交成功,感谢您的参与",但是数据库没有获取值。
诡异的是我将表AddWord改成ddWord,依然提示提交成功,这是为什么呢? 学长学姐们请指教。

解决方案 »

  1.   

    conn.Open();
    SqlCommand cmd2 = new SqlCommand(strsql, conn);有问题。交换下顺序,并且也写在try里
      

  2.   

    你说的意思是不是没有写入到数据库。
    你写入后先cmd.ExecuteNonQuery();
    然后不进行释放试一下。连接也先不要关。
      

  3.   

    UserName,Email,QQ,Title,Content,Face,AddTime,IP这些中可能有保留字符
      

  4.   

    conn.Open();怎么不放到异常处理里面?
    另外  conn.Open();
         SqlCommand cmd2 = new SqlCommand(strsql, conn);
    应该交换一下顺序吧。 IAsyncResult result = cmd2.BeginExecuteNonQuery();
                    while (!result.IsCompleted)
                    {
    ........
                    }
     Response.Write("<script>alert('恭喜你,提交成功,感谢您的参与!');parent.location='ForumIndex.aspx'</script>");
      

  5.   

    判断一下,cmd2.ExecuteNonQuery();执行的记录条数,大于0才是成功的
      

  6.   

    BeginExecuteNonQuery()这是异步操作的
    直接使用ExecuteNonQuery()
      

  7.   

    BeginExecuteNonQuery()这是异步操作的 
    直接使用ExecuteNonQuery()
      

  8.   


    怎么判断呢?回复6L, 必须用异步操作才能执行,和BeginExecuteNonQuery()没有关系。