2017-05-09 38 views
3

這是不好的編碼?(?,?...?)或(@field1,@field2 ... @fieldn)?

我有一個查詢

INSERT INTO sometable (field1,field2...fieldn) VALUES (?,?,.....?) 

然後

cmd.Parameters.Add("TOFnr", OdbcType.Int, 10).Value = orderId; 
cmd.Parameters.Add("LineNr", OdbcType.Int, 10).Value = maxLineNr; 
cmd.Parameters.Add("Date", OdbcType.VarChar, 8).Value = rowHeader["Date"]; 

代碼工作,除非有一個if條件身邊的添加,該行後導致數據陷入了錯誤的變量。

佔位符(「TOFnr」等)僅用於程序員參考,不被sql或c#本身使用,對嗎?

難道它不容易在查詢中使用命名參數?

INSERT INTO sometable (field1,field2...fieldn) VALUES (@TOFnr,@LineNr,[email protected]) 

這是c#連接borland paradox over odbc。

+0

目前,使用文本命令或存儲過程似乎仍然不支持在.NET Framework數據提供程序中爲ODBC命名的查詢參數:http://stackoverflow.com/questions/6338139/can-odbc-parameter-place -holders-be-named&https://msdn.microsoft.com/en-us/library/system.data.odbc.odbccommand.commandtype.aspx。簡而言之,在處理ODBC時應保留「?」佔位符。 –

回答

1

難道在查詢中使用命名參數的錯誤更少嗎?

是的。不幸的是,ADO.NET ODBC驅動程序不允許在SQL語句中傳遞命名SQL參數,因此對您而言不幸的是,使用ODBC驅動程序是不可能的。

我不是Paradox的專家,但可能會有一個專門用於Paradox的驅動程序,它允許命名參數。你可能在那裏有更多的運氣。

+0

臭蟲。臭蟲臭蟲! –

相關問題