SQL成功查询代码

时间:2013-04-26 01:43:42

标签: c# sql database sql-server-express

SQL Server Express在查询成功时是否返回代码?你怎么能用C#来捕获它?

谢谢

我有一个下一个按钮,允许我从表中接下来的10行。我想根据先前的查询是否成功来建立此继续按钮。

2 个答案:

答案 0 :(得分:0)

在不知道如何生成查询的情况下,很难确切告诉您如何执行此操作,但如果您使用的是SQLDataReader,则可以检查其HasRows属性,或者如果您使用的是DataTable,则可以检查其行。伯爵财产。

答案 1 :(得分:0)

值得注意的是,如果查询失败,您将收到异常,因此不会返回任何内容,除非您捕获异常,然后您可以返回任何内容!

我想也许您正在考虑 ExecuteNonQuery INSERT/UPDATE/DELETE命令会返回受影响的行数(通过命令中的所有语句),或者返回-1如果交易被回滚。它不会返回受select语句影响的行数,但这不应成为问题,因为没有理由将ExecuteNonQuery用于SELECT语句。

如果您只是想要返回COUNT个结果,则可以将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;

}