2012-12-25 102 views
2

我提交查詢,它不會拋出異常,它會寫入數據庫,但不是我想要的。出於某種原因,它不會從我告訴查詢的第一件事,除了碰任何東西,並且設置爲0。MySql更新查詢不工作,在asp.net

這裏是我的代碼:

public static int UpdateTagDefinition(Dictionary<string, object> sqlQueryParams) 
    { 
     MySqlCommand query = new MySqlCommand(); 
     query.CommandText = "UPDATE `windows_dev` SET `name` = @name AND `desc_short` = @desc_short AND `desc_long` = @desc_long AND `tags` = @tags AND `image_title` = @image_title AND `images` = @images AND `release_date` = @release_date AND `update_date` = @update_date AND `is_on_sourcecontrol` = @is_on_sourcecontrol AND `sourcecontrol_type` = @sourcecontrol_type AND `sourcecontrol_uri` = @sourcecontrol_uri AND `download_uri` = @download_uri AND `project_uri` = @project_uri AND `source_uri` = @source_uri AND `is_public` = @is_public WHERE `DID` = @did;"; 
     query.Parameters.Clear(); 
     foreach(var sqlParam in sqlQueryParams) 
     { 
      query.Parameters.AddWithValue("@" + sqlParam.Key.ToString(), sqlParam.Value); 
     } 

     return Connector.RunSQLUpdateQuery(query); 
    } 

    public static int RunSQLUpdateQuery(MySqlCommand query) 
    { 
     try 
     { 
      MySqlConnection cnx = new MySqlConnection(ConfigurationManager.ConnectionStrings["******"].ConnectionString); 

      // Connect to News Database and get recent article 
      query.Connection = cnx; 
      cnx.Open(); 
      MySqlDataReader Reader; 
      Reader = query.ExecuteReader(); 
      cnx.Close(); 

      return 1; 
     } 
     catch 
     { 
      return 2; 
     } 
    } 

而且在那裏我設置SQL的地方PARAMS;

  Dictionary<string, object> sqlQueryParams = new Dictionary<string, object>(); 
      sqlQueryParams.Add("name", Request.Form["name"]); 
      sqlQueryParams.Add("desc_short", Request.Form["desc_short"]); 
      sqlQueryParams.Add("desc_long", Request.Form["desc_long"]); 
      sqlQueryParams.Add("tags", TagDefinitions.TagDefinitionsToSQL(TagDefinitions.GetTagDefinitionIdentsFromList((List<string>)JsonConvert.DeserializeObject(Request.Form["tags"], typeof(List<string>))))); 
      sqlQueryParams.Add("image_title", Request.Form["image_title"]); 
      sqlQueryParams.Add("images", Request.Form["images"]); 
      sqlQueryParams.Add("release_date", Request.Form["release_date"]); 
      sqlQueryParams.Add("update_date", Request.Form["update_date"]); 
      sqlQueryParams.Add("is_on_sourcecontrol", Request.Form["is_on_sourcecontrol"]); 
      sqlQueryParams.Add("sourcecontrol_type", Request.Form["sourcecontrol_type"]); 
      sqlQueryParams.Add("sourcecontrol_uri", Request.Form["sourcecontrol_uri"]); 
      sqlQueryParams.Add("download_uri", Request.Form["download_uri"]); 
      sqlQueryParams.Add("project_uri", Request.Form["project_uri"]); 
      sqlQueryParams.Add("source_uri", Request.Form["source_uri"]); 
      sqlQueryParams.Add("is_public", Request.Form["is_public"]); 
      sqlQueryParams.Add("did", int.Parse(Request.Form["did"])); 

回答

7
時,要更新多列,使用

COMMA代替AND

query.CommandText = @"UPDATE `windows_dev` 
         SET `name` = @name, 
          `desc_short` = @desc_short, 
          ... other columns ..... 
          `is_public` = @is_public 
         WHERE `DID` = @did"; 
+1

這工作完全,謝謝。另外,感謝您能夠使用@作爲多行報價的提示。 –

+1

不客氣!聖誕節快樂。 ':D' –