C# c创建一个具有空值的sql查询

C# c创建一个具有空值的sql查询,c#,.net,sql-server,C#,.net,Sql Server,我在我的sql管理工作室中执行此操作 我得到了结果 我想从C做这个查询 我试过这个: string query = "SELECT * FROM SMSMessage WHERE respondCode IS @respondCode"; SqlConnection con = new SqlConnection(Utilities.getConnectionString()); SqlCommand cmd = new SqlCommand(query, con); cmd.Parameter

我在我的sql管理工作室中执行此操作

我得到了结果

我想从C做这个查询

我试过这个:

string query = "SELECT * FROM SMSMessage WHERE respondCode IS @respondCode";
SqlConnection con = new SqlConnection(Utilities.getConnectionString());
SqlCommand cmd = new SqlCommand(query, con);
cmd.Parameters.AddWithValue("@respondCode", DBNull.Value);
我有一个例外:

An unhandled exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll

Additional information: Incorrect syntax near '@respondCode'.
为什么

我也试过了

string query = "SELECT * FROM SMSMessage WHERE respondCode IS NULL";
我得到了空的结果

更新 由于无法比较NULL值,NULL=NULL的计算结果为未知,因此您的查询需要:

SELECT * FROM SMSMessage 
WHERE (respondCode = @respondCode) OR
      (respondCode IS NULL AND @respondCode IS NULL)
由于无法比较NULL值,NULL=NULL的计算结果为未知,因此您的查询需要:

SELECT * FROM SMSMessage 
WHERE (respondCode = @respondCode) OR
      (respondCode IS NULL AND @respondCode IS NULL)
由于无法比较NULL值,NULL=NULL的计算结果为未知,因此您的查询需要:

SELECT * FROM SMSMessage 
WHERE (respondCode = @respondCode) OR
      (respondCode IS NULL AND @respondCode IS NULL)
由于无法比较NULL值,NULL=NULL的计算结果为未知,因此您的查询需要:

SELECT * FROM SMSMessage 
WHERE (respondCode = @respondCode) OR
      (respondCode IS NULL AND @respondCode IS NULL)

编写此查询以实现所需行为的一种方法是

SELECT *
FROM   SMSMessage
WHERE  EXISTS (SELECT respondCode
               INTERSECT
               SELECT @respondCode) 

编写此查询以实现所需行为的一种方法是

SELECT *
FROM   SMSMessage
WHERE  EXISTS (SELECT respondCode
               INTERSECT
               SELECT @respondCode) 

编写此查询以实现所需行为的一种方法是

SELECT *
FROM   SMSMessage
WHERE  EXISTS (SELECT respondCode
               INTERSECT
               SELECT @respondCode) 

编写此查询以实现所需行为的一种方法是

SELECT *
FROM   SMSMessage
WHERE  EXISTS (SELECT respondCode
               INTERSECT
               SELECT @respondCode) 



请帮帮我,我得到的结果是空的,尽管DataGasear中有结果,你确定你指向的是同一个数据库吗?检查您的连接字符串。是的,在同一个数据库中,我正在使用datatabel填充数据,行数=0我将尝试更改查询以检查是否获得结果并更新您我接受了您的答案,谢谢,我更新了我的问题,使用了我正在使用的代码,您可以检查我为什么输入空结果吗?我使用的是同一个数据库真的,我只有一个sql instancehelp pleaes,我得到的结果是空的,虽然DataGasear中有结果,你确定你指向的是同一个数据库吗?检查您的连接字符串。是的,在同一个数据库中,我正在使用datatabel填充数据,行数=0我将尝试更改查询以检查是否获得结果并更新您我接受了您的答案,谢谢,我更新了我的问题,使用了我正在使用的代码,您可以检查我为什么输入空结果吗?我使用的是同一个数据库真的,我只有一个sql instancehelp pleaes,我得到的结果是空的,虽然DataGasear中有结果,你确定你指向的是同一个数据库吗?检查您的连接字符串。是的,在同一个数据库中,我正在使用datatabel填充数据,行数=0我将尝试更改查询以检查是否获得结果并更新您我接受了您的答案,谢谢,我更新了我的问题,使用了我正在使用的代码,您可以检查我为什么输入空结果吗?我使用的是同一个数据库真的,我只有一个sql instancehelp pleaes,我得到的结果是空的,虽然DataGasear中有结果,你确定你指向的是同一个数据库吗?检查您的连接字符串。是的,在同一个数据库中,我正在使用datatabel填充数据,行数=0我将尝试更改查询以检查是否获得结果并更新您我接受了您的答案,谢谢,我更新了我的问题,使用了我正在使用的代码,您可以检查我为什么输入空结果吗?我实际上使用的是同一个数据库,我只有一个sql实例,我还尝试了从SMSMessage中选择字符串query=SELECT*,其中respondCode为NULL;结果是空的。听起来您连接到的实例/数据库与您在SSMS中连接的实例/数据库不同。不,不,是同一个实例,我只有一个实例,那么,您是如何得出结果集为空的结论的?可能是不同架构中的表。也可能是调试器行为。您是否尝试在sda.Fillresults之后执行2行;看看行数是否为正?我还尝试了从SMSMessage中选择字符串query=SELECT*,其中respondCode为NULL;结果是空的。听起来您连接到的实例/数据库与您在SSMS中连接的实例/数据库不同。不,不,是同一个实例,我只有一个实例,那么,您是如何得出结果集为空的结论的?可能是不同架构中的表。也可能是调试器行为。您是否尝试在sda.Fillresults之后执行2行;看看行数是否为正?我还尝试了从SMSMessage中选择字符串query=SELECT*,其中respondCode为NULL;结果是空的。听起来您连接到的实例/数据库与您在SSMS中连接的实例/数据库不同。不,不,是同一个实例,我只有一个实例,那么,您是如何得出结果集为空的结论的?可能是不同架构中的表。也可能是调试器行为。您是否尝试在sda.Fillresults之后执行2行;看看行数是否为正?我还尝试了从SMSMessage中选择字符串query=SELECT*,其中respondCode为NULL;结果是空的。听起来您连接到的实例/数据库与您在SSMS中连接的实例/数据库不同。不,不,是同一个实例,我只有一个实例,那么,您是如何得出结果集为空的结论的?可能是不同架构中的表。也可能是调试器行为。你做了什么 y执行超过sda.Fillresults的2行;看看行数是否为正?