none
动态的列名应该怎么传递? RRS feed

  • 问题

  • public bool EditVariety(string rowName, string newValue, int vId)
    
    
    
     {
    
    
    
      string sql = "UPDATE DNA_Variety SET [@rowName] = @newValue WHERE F_FID = @F_FID";
    
    
    
      SQLiteParameter[] paras = new SQLiteParameter[] { 
    
    
    
      new SQLiteParameter("@rowName", rowName),
    
    
    
      new SQLiteParameter("@newValue", newValue),
    
    
    
      new SQLiteParameter("@F_FID", vId)
    
    
    
      };
    
    
    
      return SQLiteHelper.ExecuteNonQuery(sql, paras) == 0 ? false : true;
    
    
    
     }
    
    
    
    

     

    现在提示列名@rowName无效,像这种动态的列名应该怎么传递?

    string sql = "UPDATE DNA_Variety SET " + rowName + " = @newValue WHERE F_FID = @F_FID";
    
    

    SQL语句要这么写没有问题,可是这种" + rowName + "拼接很不安全。

    • 已编辑 hkstb 2010年11月8日 2:14 有错误
    2010年11月8日 2:09

答案

  • 列名是无法使用数据参数来传递的,可以根据一个 swith case做判断来修改这个,参数传递switch

     

    然后用stringbuilder来组合提交到数据库的语句

    • 已标记为答案 hkstb 2010年11月8日 12:29
    2010年11月8日 6:34
    版主

全部回复