C# SQL成功查询代码

C# SQL成功查询代码,c#,sql,database,sql-server-express,C#,Sql,Database,Sql Server Express,当查询成功时,SQL Server是否表示返回代码?如何在C语言中捕捉到这一点 多谢各位 我有一个“下一步”按钮,允许我从一个表中选择下10行。我想根据上一个查询是否成功来继续此按钮。不知道如何生成查询,很难确切地告诉您如何执行此操作,但如果您使用的是SQLDataReader,则可以检查其HasRows属性,或者如果您使用的是DataTable,则可以检查其Rows.Count属性。请注意,如果查询失败,您将得到一个异常,因此不会返回任何内容,除非您捕获了异常,否则您可以让它返回您喜欢的任何内

当查询成功时,SQL Server是否表示返回代码?如何在C语言中捕捉到这一点

多谢各位


我有一个“下一步”按钮,允许我从一个表中选择下10行。我想根据上一个查询是否成功来继续此按钮。

不知道如何生成查询,很难确切地告诉您如何执行此操作,但如果您使用的是SQLDataReader,则可以检查其HasRows属性,或者如果您使用的是DataTable,则可以检查其Rows.Count属性。

请注意,如果查询失败,您将得到一个异常,因此不会返回任何内容,除非您捕获了异常,否则您可以让它返回您喜欢的任何内容

我想您可能正在考虑,对于INSERT/UPDATE/DELETE,哪个命令将返回受命令中所有语句影响的行数,或者如果事务回滚,则返回-1。它不会返回受select语句影响的行数,但这不应该是问题,因为没有理由对select语句使用ExecuteOnQuery

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

如果正在使用,则可以将属性用于布尔值,如果它返回行,或者在使用读卡器时,可以使用计数器返回精确的行数,例如:

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,则可以使用数据库中的行数来获取成功的布尔值或受影响的行数

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;

}

我使用连接、命令和适配器来填充数据表。我认为当查询为逗号时,SQL server会返回一个int值,如100;如果查询失败,则返回-1……如果有行,则返回行。如果没有,那就没有了。为什么它需要返回代码?我被告知,如果查询成功执行,Oracle Datbase将返回100,否则返回-1,SQL express是否会执行类似的操作?显示代码,然后我们就可以看到了。否则它将在“返回行”中成功关闭,或在“不抛出错误”中成功关闭。谢谢GarethD。我会把你的答案应用到我的代码中。我被告知基于Oracle的数据库返回一个特定值,所以我不确定MS SQL Server Express是否也执行了类似操作。谢谢大家的意见。