- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在我网站的某个区域,我需要控制对一组特定用户的访问。
这是通过对照 SQL 服务器数据库上的表检查用户 ID 来完成的。如果 ID 存在,则他们被授予访问权限:
SELECT 1 FROM admin WHERE userID = @userID
我注意到有几种方法可以检查数据库中是否存在一行,我想知道使用其中任何一种方法是否有任何好处,或者是否有标准。
第一种方法是检查 SqlDataReader
中是否存在行:
if (!SqlCommand.ExecuteReader().HasRows)
{
//redirect
}
第二个是使用 ExecuteScalar()
检查返回值是否为 DBNull
:
if (SqlCommand.ExecuteScalar() is DBNull)
{
//redirect
}
我应该使用哪个?有没有更好的办法?这真的重要吗?
最佳答案
第二个选项,因为您的开销较小。
不过请注意
ExecuteScalar返回一个对象是
The first column of the first row in the result set, or a null reference (Nothing in Visual Basic) if the result set is empty
您的查询可能不会返回任何内容,因此最好检查 null 而不是 DBNull
if (SqlCommand.ExecuteScalar() == null)
{
//redirect
}
关于c# - ExecuteReader.HasRows 与 ExecuteScalar() 是 DBNull,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13527300/
我有这个问题:阅读器关闭时调用 HasRows 的尝试无效。我已经尝试了很多;删除连接关闭线,最后关闭连接。但有同样的问题。我看不出我的代码有什么问题。 try { con = new Sql
我尝试使用以下代码检索数据库中的所有行: 我创建了一个包含两个对象的类,只是为了测试代码是否有效(稍后将针对不同数量的列进行扩展)。 当执行到达 if 语句时,它的计算结果为 false 并跳出循环,
我的代码有问题: using (MySqlConnection conn = new MySqlConnection(cnstr)) { conn.Open(); MySqlComma
我正在连接到 SQL Server 2012 数据库以根据 ID 查询单个值。 (可能值得一提的是,这个数据库位于我开发机器的另一个大陆的服务器上,因此延迟非常高。大约 100 毫秒)。 查询似乎执行
在浏览了很多关于 SqlDataReader.HasRows 现象的主题之后,即使结果为空,它也总是返回 true(尤其是当它是关于带有聚合的 SQL 查询时),我完全没有理会我的想法代码 但是我的示
在我的代码中,当我使用 Visual Studio C# 进行调试时,我注意到尽管查询中没有行: select MAX(idSalesJournal) as maxId from accounting
我正在使用 Firebird ADO.NET 数据提供程序,在将读取器传递给消费服务之前,我想确定是否返回了任何行。考虑以下代码片段: FbCommand cmd = GetSomeCommandFr
在我网站的某个区域,我需要控制对一组特定用户的访问。 这是通过对照 SQL 服务器数据库上的表检查用户 ID 来完成的。如果 ID 存在,则他们被授予访问权限: SELECT 1 FROM admin
尝试在 while (dr.read()) 函数之前添加一个 if (dr.HasRows) 是否有益。我的意思是,从技术上讲,如果它没有行,它就不会被读取,所以如果您先检查它会有关系吗? using
我有这个代码: // this is managed elsewhere SqlConnection connection =... connection.Open(); // this is one
看一下这两个查询: -- #1 SELECT * FROM my_table WHERE CONTAINS(my_column, 'monkey') -- #2 SELECT * FROM my_ta
我有一个连接到 SQL 数据库的 ASP.NET 2.0 网站。我已经将 SQL Server 从 2000 升级到 2008,从那以后,有一个页面无法正常工作。 我已经解决了问题,即使数据集不为空,
当我单击文本框中包含有效 ID 号的按钮 2 时,它总是显示消息框“无效 ID 号”。但是如果我删除 IF 语句,它会显示数据库记录并且工作正常,但我需要这个 IF 语句,我认为这里的问题是 dr.
我试图找到一个由 SqlDataReader 实现并公开 HasRows、Read() 和 NextResult() 的接口(interface)。我需要这些属性和方法,因为我需要读取存储过程 (as
这实际上意味着什么? 我正在逐步执行一些代码,当我在 vs2010 的本地窗口下查看数据读取器的属性时,DR.HasRows 显示错误: HasRows '(DR).HasRows' threw an
我是一名优秀的程序员,十分优秀!