我想在往数据库插入数据成功的时候取出该记录的PostID值!现在值是读对的,但是每次都是添加进两条数据啊!!为什么?
.....
String insertCmd = "insert into TestCSharp (Title, Content) values (@Title, @Content) SELECT PostID = @@IDENTITY";
SqlCommand myCommand = new SqlCommand(insertCmd, myConnection);
myCommand.Parameters.Add(new SqlParameter("@Title", SqlDbType.NVarChar, 11));
myCommand.Parameters["@Title"].Value = Title;
myCommand.Parameters.Add(new SqlParameter("@Content", SqlDbType.NVarChar, 40));
myCommand.Parameters["@Content"].Value = Content;
myCommand.Connection.Open();
try 
{
myCommand.ExecuteScalar();
//Response.Write("<script>alert('系统提示:信息录入成功!');window.close;</script>");
Int32 PostID = Convert.ToInt32(myCommand.ExecuteScalar());
Response.Write (PostID);
....

解决方案 »

  1.   

    String insertCmd = "insert into TestCSharp (Title, Content) values (@Title, @Content) SELECT PostID = @@IDENTITY";
    SqlCommand myCommand = new SqlCommand(insertCmd, myConnection);
    myCommand.Parameters.Add(new SqlParameter("@Title", SqlDbType.NVarChar, 11));
    myCommand.Parameters["@Title"].Value = Title;
    myCommand.Parameters.Add(new SqlParameter("@Content", SqlDbType.NVarChar, 40));
    myCommand.Parameters["@Content"].Value = Content;
    myCommand.Connection.Open();
    try 
    {
    //Response.Write("<script>alert('系统提示:信息录入成功!');window.close;</script>");
    Int32 PostID = Convert.ToInt32(myCommand.ExecuteScalar());
    Response.Write (PostID);
    ....
      

  2.   

    可能是这句的问题:Response.Write (PostID);,把这一句注释掉试试.
      

  3.   

    myCommand.ExecuteScalar();
    Int32 PostID = Convert.ToInt32(myCommand.ExecuteScalar());
    执行了两次ExecuteScalar,当然保存了两条数据啊
    把上面的去掉就可以了
      

  4.   

    try 
    {
    Int32 PostID = Convert.ToInt32(myCommand.ExecuteScalar());//一次就够了
    //Response.Write("<script>alert('系统提示:信息录入成功!');window.close;</script>");Response.Write (PostID);你的代码很明显运行了2次嘛