c# - 通过sqlquery C#检查数据库中的空值

标签 c# asp.net sql-server-2008

我输入了数据库中存在的用户名。该名称只有名字和姓氏。所以中间名是空的,它作为 null 存储在数据库中。为了获取用户的员工 ID,我使用了以下查询。但是执行查询后obj的值为null。名字和姓氏存储在一个数组中。我检查了他们的值(value)观。他们的值(value)观还可以。

你能告诉我为什么这个对象没有获取任何值吗?

SqlCommand cmm1= new SqlCommand ();
cmm1.CommandText = ("Select empID from empPersonalInfo where empFirstName= '" + arr[0].ToString() + "' and empMiddleName= '" + System.DBNull.Value + "' and empLastName= '" + arr[2].ToString() + "' ");            
cmm1.Connection = conn;
obj = cmm1.ExecuteScalar();

最佳答案

您不能使用等于“=”来比较 NULL,而是使用“IS NULL”:

cmm1.CommandText = ("Select empID from empPersonalInfo where empFirstName= '" + 
              arr[0].ToString() + "' and empMiddleName IS NULL and empLastName= '" + 
              arr[2].ToString() + "' ");    

顺便说一句,这个查询真的没有多大意义。也许:

empMiddleName IS NULL OR empMiddleName =  @somevalue

另外,请注意:您可能容易受到 SQL 注入(inject)攻击。使用参数而不是连接用户输入值。

关于c# - 通过sqlquery C#检查数据库中的空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16457937/

相关文章:

c# - PInvoke lmdif1 签名

javascript - ASP.NET C# 后端,用户是从 JavaScript 确认框中按了确定还是取消?

Asp.net MVC 相同的 View 名称,不同的路径

asp.net - 使用不带字符串 URL 的 ASP.NET 重定向?

SQL - 通过条件对行进行分组,直到发现异常

c# - 如果字符串不为空,FluentValidation 如何检查长度?

c# - 如何停止 Page.DataBind() 的递归调用?

c# - 当记录应该是唯一的时重复记录

sql - 重构——两条可怕的线

sql - #SQL Server中的表数据完整性如何?