子查询返回的值超过1 ..查询C#异常

时间:2014-01-16 13:18:18

标签: c# sql sql-server

我做了一个简单的查询,使用内连接连接数据库中的两个表。查询如下:

Select t1.UserName,t1.Title,t1.FirstName,t1.LastName,t1.MiddleName,t1.IsActive,t1.ProgramID,t2.Email
from table1 t1
inner join table2 t2 on t1.UserId = t2.UserId

查询在SQL Server Management Studio中执行良好,并根据需要返回行,但在Visual Studio中调试我的代码时,到达

adapter.fill(dataset);

它抛出以下异常:

子查询返回的值超过1。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。

这是C#代码段:

string selectCmd = @"Select t1.UserName,t1.Title,t1.FirstName,t1.LastName,t1.MiddleName,t1.IsActive,t1.ProgramID,t2.Email
from table1 t1
inner join table2 t2 on t1.UserId = t2.UserId ";
DataSet dataset = new DataSet();
                   using (SqlConnection conn = new SqlConnection(MyConnString))
                   {
                       SqlDataAdapter adapter = new SqlDataAdapter();
                       adapter.SelectCommand = new SqlCommand(selectCmd, conn);
                       conn.Open();
                       adapter.Fill(dataset);
                   }

有什么建议吗?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

您的联接返回多个值,并且您尝试将这些值放在一个参数中。

示例:----这是您的错误查询

     DECLARE @Test INT 
SET @Test = (SELECT ID FROM ABC A INNER JOIN XYZ X ON A.ID = X.AID)

解决方案:

     DECLARE @Test INT 
   SET @Test = (SELECT TOP 1 ID FROM ABC A INNER JOIN XYZ X ON A.ID = X.AID)

答案 1 :(得分:0)

好的,这是计时器工作问题。必须在部署解决方案之前重新启动sharepoint计时器服务。