Witam
Zrobiłem metodę która zapisuje do BD wiadomości wysyłane przez użytkownika do innego użytkownika(ów) w systemie.
Metoda pobiera argument obiekt Message, zawierający informacje o wiadomości (tj tytuł, treść itd) oraz List<string> która zawiera nicki użytkowników którym wysyłana zostanie ta wiadomość.
public void insertMessage(Messages newMessage, List<string> sendTo)
{
SqlConnection conn = new SqlConnection(_connectionParameters);
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
foreach (string send in sendTo)
{
cmd.CommandText = "INSERT Messagess (title, text, autor, sendTo, date, typeOfMessages)" +
"VALUES (@title, @text, @autor, @sendTo, @date, @typeOfMessages)";
cmd.Parameters.AddWithValue("@title", newMessage.Title);
cmd.Parameters.AddWithValue("@text", newMessage.Text);
cmd.Parameters.AddWithValue("@autor", newMessage.Autor);
//zmienia sie tylko parametr sendTo, reszta jest taka sama
cmd.Parameters.AddWithValue("@sendTo", send);
cmd.Parameters.AddWithValue("@date", newMessage.Date);
cmd.Parameters.AddWithValue("@typeOfMessages", newMessage.TypeOfMessages);
}
using (conn)
{
conn.Open();
cmd.ExecuteNonQuery();
}
}
Gdy wysyłam wiadomość do jednego użytkownika jest ok. Ale gdy do więcej, wywala błąd
Exception Details: System.Data.SqlClient.SqlException: The variable name '@title' has already been declared. Variable names must be unique within a query batch or stored procedure.
Co mogę zrobić aby te parametry były unikatowe? Jak rozwiązać ten problemik aby kod pozwalał na zrobienie więcej niż jednego insertu do BD ?