SQL查询给出了有关列数不匹配的错误

时间:2014-10-16 13:57:22

标签: sql sql-server

我收到此错误:

  

附加信息:参数化查询'(@ kelime nvarchar(4000))SELECT baslik FROM haberEn WHERE baslik'期望参数' @ kelime',未提供

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

我的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);

3 个答案:

答案 0 :(得分: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.

答案 1 :(得分:0)

表中不是有不同数量的字段吗?

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

答案 2 :(得分:0)

Union要求表格具有相同的列数。

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