查询成功时 SQL Server Express 是否返回代码?以及如何在 C# 中捕获这一点?
谢谢
我有一个下一个按钮,它允许我从表中获取接下来的 10 行。我想根据上一个查询是否成功来建立这个继续按钮。
查询成功时 SQL Server Express 是否返回代码?以及如何在 C# 中捕获这一点?
谢谢
我有一个下一个按钮,它允许我从表中获取接下来的 10 行。我想根据上一个查询是否成功来建立这个继续按钮。
在不知道如何生成查询的情况下,很难确切地告诉您如何执行此操作,但如果您使用的是 SQLDataReader,则可以检查其 HasRows 属性,或者如果您使用的是 DataTable,则可以检查其 Rows.Count 属性。
值得注意的是,如果查询失败,您将收到异常,因此不会返回任何内容,除非您当然捕获了异常,否则您可以让它返回您喜欢的任何内容!
我想也许你正在考虑ExecuteNonQuery哪个 forINSERT/UPDATE/DELETE
命令将返回受影响的行数(受命令中的所有语句),或者如果事务回滚则返回 -1。它不会返回受 select 语句影响的行数,但这应该不是问题,因为没有理由使用ExecuteNonQuery
forSELECT
语句。
如果您只想返回 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;
}