String zyjf = Session["unitjm"].ToString().Trim()+"jf";//专业积分字段,用于SQL事务,录入及更新数据
SqlConnection conn = new SqlConnection(ConfigurationManager.AppSettings["conn"]);
conn.Open();
SqlTransaction sqltran = conn.BeginTransaction();//新事务,执行不成功会使数据库回滚。
SqlCommand gxallcmd = conn.CreateCommand();
gxallcmd.Transaction = sqltran;
try
{
    gxallcmd.CommandText = "Update jfyb Set " + zyjf + "=" + zyjf + "+333.22 where name='张三'";
    gxallcmd.ExecuteNonQuery();
    sqltran.Commit();
    Label3.Text = "录入";
}
catch
{
   sqltran.Rollback();
   Label3.Text = "错误";
}
如上代码。定义zyjf这个String,类型的字段的时候如果代码按照如上代码写try中的内容就可以执行成功。
但是如果这样定义字段String zyjf = Session["unitjm"].ToString()+"jf";代码执行try中的字段就会失败
我用的Sqlserver2005。
Session的来源是数据库,会不会是我在创建Session的时候就已经把空格加入了Session中了,才导致我从Session中去得的字段包含空格,还是其他什么原因谢谢。
     

解决方案 »

  1.   

    经过验证。发现是我创建Session的时候就已经把空格加进入了。。但是我步明白为什么我用的SQL server2005的数据库。我是直接在数据里边手工添加的数据,我明明已经把空格删除了啊。。为什么取出来的数据依然有空格呢以下是我创建Session的句子。
    SqlConnection conn = new SqlConnection(ConfigurationManager.AppSettings["conn"]);
    conn.Open();
    string sql = "Select * from Users where userid = '" + this.Login1.UserName.Trim()+ "'and pwd='"+this.Login1.Password.Trim()+"'";
    SqlCommand cmd = new SqlCommand(sql, conn);
    SqlDataReader reader = cmd.ExecuteReader();
    if (reader.Read())
    {
       Session["unitjm"] = reader["unitjm"].ToString().T;
       return true;
    }
    else
    {            
      return false;
    }
    晕了。。哪里来的空格。。
      

  2.   

     "Update jfyb Set " + zyjf + "=" + zyjf + "+333.22 where name='张三'"; 
    改成
     "Update jfyb Set " + zyjf + "='" + zyjf + "+333.22' where name='张三'"; 
      

  3.   

    跟踪一下reader["unitjm"].ToString()的值,很多错误过通过单步执行来解决
      

  4.   

    结贴了啊谢谢各位我以前用Delphi的。现在改用vs.net很多功能还不是很熟悉。不过谢谢大家 。