2014-10-16 91 views
-3

的计数的不匹配:SQL查询给了我错误关于我得到这个错误列

Additional information: The parameterized query '(@kelime nvarchar(4000)) SELECT baslik FROM haberEn WHERE baslik' expects the parameter '@kelime', which was not supplied

为什么我收到了这样的错误?我该如何解决它?

我的SQL命令和C#代码:

if (requesturl.Contains('-')) 
       { 
        string[] aramaParcala = requesturl.Split('-'); 
        foreach (string parcalanan in aramaParcala) 
        { 
         aranacak = aranacak + " " + parcalanan; 
        } 
       } 
       baglanti.Open(); 
       komut.CommandType = CommandType.Text; 
       komut.CommandText= 
        " SELECT baslik FROM haberEn WHERE baslik like '%' + @kelime + '%' "+ 
        " UNION " + 
        " SELECT yazi FROM haberEn WHERE yazi like '%' + @kelime + '%' " + 
        " UNION" + 
        " SELECT baslik FROM kaynakEn WHERE baslik like '%' + @kelime + '%' " + 
        " UNION" + 
        " SELECT yazi FROM kaynakEn WHERE yazi like '%' + @kelime + '%' Order By baslik ASC";//yazi LIKE '%' + @kelime + '%' 
       komut.Parameters.AddWithValue("@kelime",aranacak); 
+2

这实际上与ASP.NET无关。如果你剥离了ASP.NET部分并只给了我们查询,即表的表结构,那么你的问题会更容易回答。以及结果应该是什么样子(使用示例数据)。 – 2014-10-16 14:01:47

+0

haberEn =>简体中文新闻 kaynakEn =>简体中文出版作品 – OnePage 2014-10-16 14:02:08

+0

异常文字很清晰......每一个'select'都没有相同数量的列... – 2014-10-16 14:06:00

回答

2

由于列数和数据类型从haberEnkaynakEn应该匹配。

如果可能的话,只选择你需要的字段,或者告诉数据库如何订购它们:

SELECT col1, col2, col3 FROM haberEn 
union 
SELECT col1, col4, col3 FROM kaynakEn 
-- note the different order of columns to match those of haberEn. 
+0

好吧我选择相同的列,但现在我给这个错误:“附加信息:参数化查询'(@kelime nvarchar(4000))SELECT baslik从haberEn WHERE baslik'期望参数'@kelime',它没有提供。 “ – OnePage 2014-10-16 14:05:33

+0

确定'aranacak'不是'null'? – 2014-10-16 14:07:22

+0

是'aranacak'不为空 – OnePage 2014-10-16 14:08:30

0

,你就没有在表中不同数量的领域?

至少,你应该从每个表中“选择”相同数量的列。

0

联盟要求表具有相同的列数。

如果所有表的列数都相同,请检查其中一个结果是否返回空。