SQL成功查询代码

问题描述:

当查询成功时,SQL Server Express会返回代码吗?你怎么能在C#中捕获这个?SQL成功查询代码

谢谢

我有一个按钮,让我从一个表中的下10行。我想根据以前的查询是否成功来继续使用此按钮。

+0

显示代码,然后我们可以看到。否则它将被关闭 – 2013-04-26 02:30:01

+0

成功,因为'返回行'或成功,因为'不会引发错误' – 2013-04-26 09:18:03

值得注意的是,如果查询失败,你将会得到一个异常,所以什么都不会返回,除非你发现异常,那么你可以让它返回任何你喜欢的东西!

我想,也许你所想的ExecuteNonQuery这对于INSERT/UPDATE/DELETE命令将返回受影响的行数(在命令所有语句),或返回-1,如果事务回滚。它不会返回受select语句影响的行数,但这不应该成为问题,因为没有理由使用ExecuteNonQuery来表示SELECT语句。

如果你只是想要的结果的计数返回您可以结合使用COUNT查询与ExecuteScalar

如果您正在使用SqlDataReader您可以使用HasRows物业,如果它返回行一个布尔值,或者当你正在使用的阅读器,你可以使用一个计数器返回行的确切数目,例如:

int rowcount = 0; 
bool success = false; 
using (var connection = new SqlConnection("connectionString")) 
using (var command = new SqlCommand("SELECT TOP 10 * FROM Table")) 
{ 
    connection.Open(); 
    using (var reader = command.ExecuteReader()) 
    { 
     success = reader.HasRows; 
     while (reader.Read()) 
     { 
      rowcount++; 
      // DO SOMETHING WITH YOUR DATA 
     } 
    } 
} 

或者,如果你正在使用的SqlDataAdapter可以使用的行数从DataTable获得成功或任一个布尔值受影响的行数。

using (var adapter = new SqlDataAdapter("SELECT TOP 10 * FROM Table", "connectionString")) 
{ 
    DataTable table = new DataTable(); 
    adapter.Fill(table); 

    bool success = table.Rows.Count > 0; 
    int rows = table.Rows.Count; 

} 
+0

谢谢GarethD。我会拿你的答案,并将其应用于我的代码。我被告知基于Oracle的数据库返回一个特定的值,所以我不确定MS SQL Server Express是否做了类似的事情。谢谢各位的意见。 – 2013-04-26 14:40:49

不知道如何生成查询很难告诉你如何做到这一点,但如果你使用SQLDataReader你可以检查它的HasRows属性,或者如果你使用的是DataTable,你可以检查它的行.Count属性。

+0

我使用连接,命令,然后适配器来填充数据表。我以为SQL服务器在查询完成时会返回一个int值,如果是失败,则返回-1 ... – 2013-04-26 02:04:02

+0

如果它有行,它将返回行。如果没有,它不会。为什么它需要一个返回码? – Amy 2013-04-26 02:16:14

+0

如果查询成功执行,我被告知Oracle数据库返回值为100;如果不成功则返回-1,SQL表达式做类似的事情吗? – 2013-04-26 02:52:10