Я использую adapter.InsertCommand для вставки некоторых данных в таблицу.
Единственная проблема заключается в том, что они выполняются дважды, что дает мне двойные записи в БД.Я попытался следовать примеру в документации adapter.InsertCommand
и моего собственного кода, но получить тот же результат.
Это мой код:
public class nokernokDAL
{
SqlConnection connection = new SqlConnection();
SqlDataAdapter adapter = new SqlDataAdapter();
public nokernokDAL()
{
connection.ConnectionString = EPiServer.Global.EPConfig["EPsConnection"].ToString();
connection.Open();
}
public void addNewComment(int userID, int pageID, string title, string comment)
{
string query = "INSERT INTO dbo.nokernok_kommentarer (userID, pageID, commentTitle, comment) " +
"VALUES ("+ userID +", "+ pageID +", '"+ title +"', '"+ comment +"')";
adapter.InsertCommand = new SqlCommand(query, connection);
adapter.InsertCommand.ExecuteNonQuery();
}
}
Любые предложения о том, как яможно ли этого избежать?
ОБНОВЛЕНИЕ
Прямо после некоторой отладки я обнаружил, что моя функция newWallComplaint_Click
была запущена дважды.Это произошло потому, что у меня был следующий код:
protected void Page_Load(object sender, EventArgs e)
{
btnNewWallComplaint.Click += new EventHandler(this.newWallComplaint_Click);
}
Не проверяя PostBack, эта функция также выполняет мою функцию после отправки.Поэтому, чтобы избежать запуска моей функции дважды, я добавил проверку PostBack.
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
btnNewWallComplaint.Click += new EventHandler(this.newWallComplaint_Click);
}
}
Теперь мой запрос не запускается дважды.