2013-08-28 62 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

謝謝,但我一定在做錯事。我沒有得到插入。這是否需要我使用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'