我有以下代码使用 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 为空。从 Profiler 中提取后,我在 Management Studio 中测试了 SQL,它按预期返回了 ID。
接下来我添加了一个额外的命令来从不同的表(产品)中检索一个 ID。
productId 不为空,而 contribId 继续为空。
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();
}
我确信这是显而易见的事情,我会因为没有注意到它而踢自己,但现在我很难过。