SQL成功查询代码
当查询成功时,SQL Server Express会返回代码吗?你怎么能在C#中捕获这个?SQL成功查询代码
谢谢
我有一个按钮,让我从一个表中的下10行。我想根据以前的查询是否成功来继续使用此按钮。
值得注意的是,如果查询失败,你将会得到一个异常,所以什么都不会返回,除非你发现异常,那么你可以让它返回任何你喜欢的东西!
我想,也许你所想的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;
}
谢谢GarethD。我会拿你的答案,并将其应用于我的代码。我被告知基于Oracle的数据库返回一个特定的值,所以我不确定MS SQL Server Express是否做了类似的事情。谢谢各位的意见。 – 2013-04-26 14:40:49
不知道如何生成查询很难告诉你如何做到这一点,但如果你使用SQLDataReader你可以检查它的HasRows属性,或者如果你使用的是DataTable,你可以检查它的行.Count属性。
我使用连接,命令,然后适配器来填充数据表。我以为SQL服务器在查询完成时会返回一个int值,如果是失败,则返回-1 ... – 2013-04-26 02:04:02
如果它有行,它将返回行。如果没有,它不会。为什么它需要一个返回码? – Amy 2013-04-26 02:16:14
如果查询成功执行,我被告知Oracle数据库返回值为100;如果不成功则返回-1,SQL表达式做类似的事情吗? – 2013-04-26 02:52:10
显示代码,然后我们可以看到。否则它将被关闭 – 2013-04-26 02:30:01
成功,因为'返回行'或成功,因为'不会引发错误' – 2013-04-26 09:18:03