2014-10-16 89 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

聯盟要求表具有相同的列數。

如果所有表的列數都相同,請檢查其中一個結果是否返回空。