2013-12-15 3 views
-1

Я получаю следующее сообщение об ошибке: Имя переменной '@Title' уже объявлено. Имена переменных должны быть уникальными в рамках пакета запросов или хранимой процедуры.ошибка в запросе mysql

public static string PostArticle(Article article) 
    { 
     try 
     { 
      conn.Open(); 
      string query = "INSERT INTO Article VALUES (@Title, @UserId, @Category, @Type, @Contents, @Thumbnail)"; 
      command.CommandText = query; 
      command.Parameters.AddWithValue("@Title", article.Title); 
      command.Parameters.AddWithValue("@UserId", article.UserId); 
      command.Parameters.AddWithValue("@Category", article.Category); 
      command.Parameters.AddWithValue("@Type", article.Type); 
      command.Parameters.AddWithValue("@Contents", article.Contents); 
      command.Parameters.AddWithValue("@Thumbnail", article.Thumbnail); 
      command.ExecuteNonQuery(); 
      return "Post Successful"; 
     } 
     finally 
     { 
      conn.Close(); 
     } 
    } 

ответ

0

Может вы пытаетесь повторно использовать существующий Command, который уже имеет параметр @Title? Получите новый Command из вашего соединения с CreateCommand, примените к нему свои значения параметров, а затем выполните эту новую команду.

Что-то вроде этого:

using (var cmd = conn.CreateCommand()) { 
    cmd.CommandText = "INSERT INTO ..."; 
    cmd.Parameters.AddWithValue("@Title", title); 
    // ... etc. 
    cmd.ExecuteNonQuery(); 
} 
+0

Это workerd один раз, а затем я вернулся к той же проблеме – user3079575

+0

Он работает сейчас, я должен добавить в конце, cmd.Parameters.clear(), потому что этот код используется не только один раз – user3079575

+0

Думаю, вам стоит подумать о том, чтобы создать новую команду каждый раз. Или найти лучший способ реорганизовать это, так как это тупо, что вы, кажется, повторно используете команду, но полностью заменяете свой список команд и параметров. –

Смежные вопросы