2009-07-21 135 views
1

如果從任何數據提供者獲得任何DbConnection,是否可以確定用於引用字符串文字的字符或字符以及轉義字符串中的任何特殊字符?我也對引用模式/表/列名稱標識符所需的字符感興趣。確定Ado.net中的字符串文字轉義字符

使用參數來指定這些東西不是一個選項,因爲我的應用程序的目的是幫助用戶建立一個SQL查詢並且在查詢中有常量是一種常見的情況。

我可以使用DataSourceInformation架構集合要達到這樣的StringLiteralPattern和QuotedIdentifierPattern (見http://msdn.microsoft.com/en-us/library/ms254501.aspx),但只有幫助我匹配現有的字符串,而不是創建它們自己。

+0

我已經開始懷疑,如果標準程序僅僅是猜測。 「對於標識符而言,對於字符串文字而言,在字符串中轉義特殊字符似乎是我見過的最常見的(也可能是唯一的)情況,我只是擔心會跨越一些不同的未知驅動程序。 – Trevor 2009-07-22 16:28:22

回答

0

我根據提供程序的類型和版本(從DbConnection確定)使用switch語句,以便知道要使用的分隔符/轉義字符。

1

創建連接(稱爲CNN)後,我做了報價模式/表/列名標識符以下幾點:

'Get table and column delimiters 
Dim sTest As String = "" 
Dim sLeftDelimiter As String = "" 
Dim sRightDelimiter As String = "" 
Dim cmd As DbCommand = cnn.CreateCommand() 
Dim adapter As DbDataAdapter = factoryDB.CreateDataAdapter() 
Dim builder As DbCommandBuilder = factoryDB.CreateCommandBuilder() 
cmd.Connection = cnn 
adapter.SelectCommand = cmd 
builder.DataAdapter = adapter 
sTest = builder.QuoteIdentifier("test") 
sLeftDelimiter = sTest.Substring(0, 1) 
sRightDelimiter = sTest.Substring(5, 1)