2016-03-15 53 views
0

我有的String.Format這裏面MS SQL查詢:MS SQL DATEPART在裏面的String.Format

string sqlCommandx = String.Format("SELECT CASE WHEN sum(d1) > 0 THEN sum(n1)/sum(d1) ELSE null END as metricScore1 FROM DataBridgeStage Where programID={0} and DATEPART(m,reportingDate) = {1} and DATEPART(yyyy,reportingDate) = {2}", 
      ProgramID, month, year); 

我收到一個錯誤,指出:SQL邏輯錯誤或丟失的數據庫\ r \ n所有這樣的欄目:米。我的語法有問題嗎?

+0

'DATEPART(m,reportingDate)'表中是否有'm'列? – Valentin

+4

在'metricScore1'之後'',在'from'之前有一個逗號'',這是SQL中的一個語法錯誤...但是我的猜測是你得到錯誤的原因是你沒有在第二行文字末尾加上'+'。您需要修復兩個 – freefaller

+1

http://stackoverflow.com/questions/3216233/what-is-passing-parameters-to-sql-and-why-do-i-need-it – AndyJ

回答

-2

正確的形式使用的String.Format是:

String.Format("{0} {1}",one,two); 
+0

正確的形式是不使用'string.Format()'用於SQL。 – Lucero

0

我終於得到了解決。但是我想感謝@Damien_The_Unbeliever。我不認爲這是一個SQLite問題。在這種情況下,我使用了SQLite語法。語法如下:

string sqlCommandx = String.Format("SELECT CASE WHEN sum(d1) > 0 THEN sum(n1)/sum(d1) ELSE null END as metricScore1 FROM DataBridgeStage Where programID={0} and strftime('%m',reportingdate) = '{1}' and strftime('%Y',reportingdate) = '{2}'", 
     ProgramID, month, year);