2013-08-28 60 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'