2014-09-03 139 views
0

我在写一个与SQL Server数据库通信的C#Windows窗体应用程序。有两张感兴趣的表,SubmissionProducer。在提交表格适配器,我有一个执行T-SQL的下列块的查询:TableAdapter查询返回空值

SELECT S.name, S.effDate, S.dotNumber, P.name 
FROM dbo.Submission S, dbo.Producer P 
WHERE S.submissionId = @submissionId and S.producerId = P.producerId; 

当我使用一个SubmissionTableAdapter来运行此查询,它将返回三个值正常,但没有为P.name。实际上,它不会从提交以外的任何其他表中返回任何值。我已经在SQL Server Management Studio中直接测试了查询,并且它工作得很好,所以数据在那里,查询是有效的。这里发生了什么?

回答

0

我不是一个真正的SQL连接专家,但不会尝试从Producer表返回值的提交表适配器导致一些问题?为什么不做一个加入声明?

SELECT 
    S.Name, S.effDate, S.dotNumber, P.Name 
FROM 
    dbo.Submission s 
JOIN 
    dbo.Producer P on P.producerID = S.ProducerID 
WHERE 
    S.submissionId = @submissionId 
+0

感谢您的回答,但这只是编写相同查询的不同方式。 – 2014-09-03 18:18:17

+0

它是,但我认为连接可能会改变数据集和sql读取它的方式。 – DidIReallyWriteThat 2014-09-04 12:14:49

0

我得到这个选择在Submission各个领域,其次是我从其他表要到地里干活。例如:

SELECT S.submissionId, S.name, ..., P.name 
FROM dbo.Submission S, dbo.Producer P 

其中...表示在Submission表中的字段的其余部分。

这是非常烦人和浪费,但至少它的工作原理。