SQL Server Express在查询成功时是否返回代码?你怎么能用C#来捕获它?
谢谢
我有一个下一个按钮,允许我从表中接下来的10行。我想根据先前的查询是否成功来建立此继续按钮。
答案 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;
}