2011-04-21 79 views
0

我嘗試構建可以獲取SQL數據的Visual Studio項目。你能在我的SQL語法中找到錯誤嗎?

錯誤是:1064檢索數據庫信息時出錯。 SQL語法錯誤。

我不知道錯誤在哪裏。

sQuery = string.Format("select distinct stringid from {0} where TIMESTAMPDIFF(day, insertts, now()) < 30 " + 
      "and status = '{2}' and stringid not in (select distinct stringid from {1} where TIMESTAMPDIFF(day, insertts, now()) < 30)", 

任何事情都會有幫助。

感謝

+4

你能打印已經用值格式化的sQuery嗎?可能是您提供的參數數據有些問題 – Troydm 2011-04-21 22:10:13

+2

@Martin我的不好。沒有看到代碼中的細節。缺少代碼。所以我不是多任務處理。 – 2011-04-21 22:15:29

+1

你可以請進入sQuery並在這裏打印出我們在這裏的sQuery的輸出。 – 2011-04-21 22:18:28

回答

3

字符串格式化操作看起來好像沒什麼問題(儘管有限的信息),但也有一對夫婦的可能性。

  1. 檢查生成的字符串是否爲有效格式。因此,我的意思是在執行之前打印出sQuery。由於MySQL錯誤1064是一個相當通用的「錯誤語法」錯誤,可能是給String.Format的參數形成了一個錯誤的查詢(例如包含'字符的{2})。

  2. 確保目標DBMS運行MySQL 5或更高版本。 TIMESTAMPDIFF在此之前不可用。

  3. 嘗試在實際目標DBMS中運行完全相同的查詢(使用上面(1)中的打印內容),而不是通過代碼運行。錯誤1064通常會給你一個near 'blah blah blah'附錄的錯誤信息,這有助於確切地解決其中在聲明中的問題所在。