是否有可能在SQL Server中使用與Oracle相同的表示法表示綁定變量,即:0,:1而不是使用?。綁定變量選項
我已經搜索,但沒有發現任何確鑿的事情。目前,我的解決方案使用綁定變量爲我在Oracle中運行良好的數據庫上運行的語句引入值,但我還需要在SQL Server和PostGIS中執行相同的操作。我不希望有說,例如:
switch(dialect)
{
case "Oracle":
{
oleDataBaseConnection.AddParameter(":1", coordsys);
break;
}
case "SQLServer":
{
oleDataBaseConnection.AddParameter("?", coordsys);
break;
}
}
* AddParameter()是我的包裝類,調用執行功能我已經寫了當值添加到列表添加到命令對象的功能。
我希望我的代碼儘可能乾淨,並且不包含如上所示的硬編碼內容。我想要一個適合所有人的解決方案。 (是的,我知道這可能是一廂情願的想法!)
我知道我可以使用字符串替換來做到這一點,但它不是我所追求的。我不想使用這樣的解決方法。另外我的項目經理要求我嘗試使用綁定變量來尋找解決方案。
任何想法?
我想我明白你的意思。所以基本上,當我將參數添加到命令時,字符替換將由我的包裝類處理。所以我會簡單地檢測我現在所需要的方言,並將它放在正確的語法中。或者:。一個問題是我的一個數據庫可能根本不支持綁定變量。我猜在這種情況下,我將不得不在我的代碼中進行字符串替換,但我必須事先知道它不支持綁定變量。這真的是一個相當棘手的任務。 – CSharpened 2012-02-21 16:43:57
@C精確。然而在這一點上,我希望所有體面的數據庫驅動程序都以某種方式支持綁定變量,因爲這對於避免SQL注入攻擊非常重要。 – btilly 2012-02-21 16:56:37
好的謝謝你的信息。我會看看我能否成功實施你的建議。這似乎是我需要和想到的,但我希望可能有一個稍微優雅的解決方案。謝謝。 – CSharpened 2012-02-21 16:59:19