2013-08-28 2 views
1

Возможно ли в C#/ASP.NET узнать, вставил ли ExecuteNonQuery запись или нет?Знаете ли, что запись была только что вставлена ​​через C# 4.0?

Я проверяю, чтобы адрес электронной почты не существовал в таблице, используя подзапрос.

Есть ли способ узнать, была ли вставка создана в ASP.NET?

 CommandPrizeEmails.Parameters.Add("@Email", SqlDbType.VarChar, 50); 
     CommandPrizeEmails.Parameters.Add("@DateToday", SqlDbType.DateTime); 

     CommandPrizeEmails.Parameters["@Email"].Value = txtEmail.Text; 
     CommandPrizeEmails.Parameters["@DateToday"].Value = DateTime.Now; 

     CommandPrizeEmails.ExecuteNonQuery(); 

     //int newID = (int)CommandPrizeEmails.ExecuteScalar(); 

     //CommandPrizeEmails.ExecuteNonQuery(); 
     //if (newID >= 1) { 
     // divSuccesfulEntry.Visible = true; 
     //} else { 
     // divRepeatEntry.Visible = true; 
     //} 
+0

Что не так с 'ExecuteScalar()'? Если я не ошибаюсь, он должен вернуть количество строк, затронутых запросом. – Shimrod

ответ

1

Вы можете получить строки, затронутые в ответ, чтобы проверить процесс.

Для UPDATE, INSERT и DELETE заявления, возвращаемое значение является число строк, затронутых командой.

Когда триггер существует в таблице вставляется или обновлен, возвращаемое значение включает в себя количество строк, затронутых как вставки или операции обновления и количеством

строк, пострадавших от триггера или триггеров. Для всех остальных типов операторов возвращаемое значение равно -1. Если происходит откат, значение возврата равно -1.

http://blogs.msdn.com/b/spike/archive/2009/01/27/sqlcommand-executenonquery-returns-1-when-doing-insert-update-delete.aspx

+0

Использует ли 'int retVal = CommandPrizeEmails.ExecuteNonQuery();' делает ОБА вставку (если возможно) И устанавливает 'retVal'? ... Моя вставка не работает для добавления нового электронного письма. – JoJo

+0

Да ... если ваш SQL-запрос работает нормально, он будет вставлять и возвращать retVal, если нет строки. И вы можете проверить retVal, чтобы узнать, работает ли это или нет. – Neha

+0

Спасибо, но я должен что-то делать неправильно. Я не получаю вставку. Является ли это REQUIRE я использую SP? Мне действительно не нужен SP здесь. Спасибо. – JoJo

1

ExecuteNonQuery Возврат Логическое значение Значение задвижка

например:

bool flg; 

flg=cmd.ExecuteNonQuery(); 
if (flg) 
{ msgbox("successfully inserted");} 
else {msgbox("not inserted");} 
-1
bool flg; 

flg=cmd.ExecuteNonQuery(); 
if (flg) 
{ MessageBox.Show("successfully inserted"); 
} 
else 
{ 
MessageBox.Show("not inserted"); 
} 

Это дает ошибку, как:

Невозможно неявно преобразовать тип 'int' в 'bool'