我接触SQL时间不长,.net刚学,写了这样几句程序,好像执行有问题。public double GetAllSize(SqlConnection DBConn,string sUserID)
{
if(DBConn==null)
{
ErrorMessage = "数据库未连接";
return 0;
}
if(sUserID.Equals("")) 
{
ErrorMessage = "用户ID不能为空";
return 0;
}

SqlCommand sqlCmd=null ;
SqlDataReader sqlReader=null;
SqlConnection sqlConn = DBConn;
string sSql=""; string rootDir="";
string serverIP="";
if(sqlConn.State==0) sqlConn.Open();
sSql = "select b.ServerIP,b.ServerDir from UserAccount a, ServerInfo b "
+ "where a.ServerIP = b.ServerIP and a.UserID='"+sUserID+"'";

sqlCmd=new SqlCommand(sSql , sqlConn) ; sqlReader=sqlCmd.ExecuteReader();
if(sqlReader.Read())
{
rootDir = Convert.ToString(sqlReader["ServerDir"]);
serverIP = Convert.ToString(sqlReader["ServerIP"]);
}
sqlReader.Close();
……
……double tsize=DirSize(dsize);sqlCmd.CommandText = "update UserAccount set UsedCapacity= tsize where UserID='" + sUserID + "' ";               //这句好像有问题,该怎么写? sqlCmd.ExecuteNonQuery(); 
return tsize;
}
执行后,tsize没有被返回,数据库也没有更新,也没有错误提示。但是把UsedCapacity= tsize 改成UsedCapacity= 10时可以执行的,UsedCapacity在数据库中是dcimal类型。

解决方案 »

  1.   

    sqlCmd.CommandText = "update UserAccount set UsedCapacity= tsize where UserID=" + sUserID;
      

  2.   

    sqlCmd.CommandText = "update UserAccount set UsedCapacity= "+tsize+" where UserID='" + sUserID + "' ";
      

  3.   

    tsize是取一个变量的值吧?
    应该写成:sqlCmd.CommandText = "update UserAccount set UsedCapacity=" + tsize + 
    " where UserID='" + sUserID + "'";
      

  4.   

    给个完整方法你吧
    string sql="update UserAccount set UsedCapacity= "+tsize+" where UserID='" + sUserID + "' ";               
    SqlCommand cmd = new SqlCommand(sql,Conn);
    cmd.Connection.Open();
    cmd.ExecuteNonQuery();
    cmd.Connection.Close();
      

  5.   

    string sql="update UserAccount set UsedCapacity= "+tsize+" where UserID='" + sUserID + "' ";      
    不好会被SQL注入使用参数语句
    要不对输入进行加密也可以防止