2012-10-03 236 views
0
Dim MyType as String = "numeric" 
Dim sdtype As SqlDbType sdtype = DirectCast([Enum].Parse(GetType(SqlDbType), MyType), SqlDbType) 

不適用於數字。我想知道如何處理這些數據類型。提前致謝。將數字字符串轉換爲sqldbtype

回答

1

SqlDbType枚舉根本不包含值「數字」,因此不可能將這樣的字符串轉換爲該枚舉。

爲了避免錯誤,可使用這樣的代碼:(C#,不熟悉VB.NET對不起)

SqlDbType dbType; 
if (Enum.TryParse<SqlDbType>(myType, true, out dbType)) 
{ 
    MessageBox.Show("type: " + dbType); 
} 
else 
{ 
    MessageBox.Show("invalid type: " + myType); 
} 

有各種可用的數字類型雖然,例如Float因此改變字符串其中的一個應該只是罰款:對SQL Server數據庫提供商

Dim MyType as String = "float" 

所有可用的數據類型包括:

 
BigInt 
Binary 
Bit 
Char 
DateTime 
Decimal 
Float 
Image 
Int 
Money 
NChar 
NText 
NVarChar 
Real 
UniqueIdentifier 
SmallDateTime 
SmallInt 
SmallMoney 
Text 
Timestamp 
TinyInt 
VarBinary 
VarChar 
Variant 
Xml 
Udt 
Structured 
Date 
Time 
DateTime2 
DateTimeOffset 

任何試圖在此列表中投字符串不是會導致錯誤。

編輯:第二個想法看起來像你正在使用Access數據庫?在這種情況下,使用OleDbTypeSqlDbType,只是代碼更改爲:

Dim sdtype As OleDbType sdtype = DirectCast([Enum].Parse(GetType(OleDbType), MyType), OleDbType) 

,它應該工作,因爲OleDbType確實包含了「數字」。

+0

你能告訴我什麼是SqlDbType枚舉中沒有定義的其他數據類型。 – user1685652

+0

不是,我只能說出**是什麼**。無論如何,看到我的編輯我想我找到了你的問題的根源。 –

+0

不,我正在使用SQL數據庫..反正謝謝你的幫助 – user1685652