Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SqlCommand.ExecuteScalar返回null,但原始SQL不返回_C#_Sqlcommand - Fatal编程技术网

C# SqlCommand.ExecuteScalar返回null,但原始SQL不返回

C# SqlCommand.ExecuteScalar返回null,但原始SQL不返回,c#,sqlcommand,C#,Sqlcommand,下面的代码使用SqlClient.ExecuteScalar方法从表返回ID using (var conn = new SqlConnection(connectionString)) using (var cmdContrib = new SqlCommand("SELECT ContributorId FROM Contributor WHERE Code='" + folderSystem.ContributorCode + "'", conn)) { conn.Open();

下面的代码使用SqlClient.ExecuteScalar方法从表返回ID

using (var conn = new SqlConnection(connectionString))
using (var cmdContrib = new SqlCommand("SELECT ContributorId FROM Contributor WHERE Code='" + folderSystem.ContributorCode + "'", conn))
{
    conn.Open();
    var contribId = cmdContrib.ExecuteScalar();
}
最初它是工作的,但现在contribId是空的。从探查器中提取后,我在ManagementStudio中测试了SQL,它按预期返回了ID

接下来,我添加了一个额外的命令,用于从不同的表(产品)中检索ID。
productId不为null,而contribId继续为null

using (var conn = new SqlConnection(connectionString))
using (var cmdContrib = new SqlCommand("SELECT ContributorId FROM Contributor WHERE Code='" + folderSystem.ContributorCode + "'", conn))
using (var cmdTest = new SqlCommand("SELECT productId FROM Product WHERE [filename] = 'bda00001.jpg'", conn))
{
    conn.Open();
    var contribId = cmdContrib.ExecuteScalar();
    var productId = cmdTest.ExecuteScalar();
}

我确信这是显而易见的事情,我会因为没有注意到而责备自己,但现在我很困惑。

使用探查器确认:

A) 返回了多少行(我怀疑是0) B) 它在哪个数据库中 C) 它的登录/用户上下文是什么。 D) 实际的整个SQL命令是什么


提取此命令并在同一数据库中重新执行,以确认它是否返回值。如果成功,则将您的执行上下文更改为探查器所说的连接正在运行的上下文,然后重试。如果现在失败(返回0行),则检查源表(Contributor)是否实际上是实现行级安全性的视图。

使用探查器确认:

A) 返回了多少行(我怀疑是0) B) 它在哪个数据库中 C) 它的登录/用户上下文是什么。 D) 实际的整个SQL命令是什么


提取此命令并在同一数据库中重新执行,以确认它是否返回值。如果成功,则将您的执行上下文更改为探查器所说的连接正在运行的上下文,然后重试。如果现在失败(返回0行),则检查源表(Contributor)是否实际上是一个实现行级安全性的视图。

folderSystem.ContributorCode的调试值是多少?folderSystem.ContributorCode包含哪些值?我倾向于使用SQL注入类错误(例如变量值中的单引号)。使用静态SQL查询构造cmdContrib,就像使用cmdTest一样,然后看看会发生什么。问题可能会突然出现。folderSsystem.ContributorCode包含“PST”。folderSystem.ContributorCode的调试值为“PST”。尝试将其设置为静态查询:“从tblContributor WHERE Code='PST'中选择ContributorId”。仍然返回null。folderSystem.ContributorCode的调试值是多少?folderSystem.ContributorCode包含哪些值?我倾向于使用SQL注入类错误(例如变量值中的单引号)。使用静态SQL查询构造cmdContrib,就像使用cmdTest一样,然后看看会发生什么。问题可能会突然出现。folderSsystem.ContributorCode包含“PST”。folderSystem.ContributorCode的调试值为“PST”。尝试将其设置为静态查询:“从tblContributor WHERE Code='PST'中选择ContributorId”。仍然返回null。“C)它的登录/用户上下文是什么”+1,很容易应用程序运行在不同的上下文它是不同的数据库(令人尴尬),尽管这个答案可以作为这类问题的检查表。别担心,这迟早会发生在我们所有人身上。“C)它的登录/用户上下文是什么”+1,很容易,应用程序运行在不同的环境中。这是一个不同的数据库(令人尴尬),尽管这个答案可以作为这类问题的检查表。别担心,这迟早会发生在我们所有人身上。