2011-08-14 48 views
0

有什麼辦法檢查某些字符串是否與某些MS SQL類型兼容? 我將在將字符串插入數據庫中的表之前對其進行驗證。SQL Server數據類型兼容性

編輯:我在尋找一種方法來檢查,如果一些字符串是爲varchar,焦炭,位等兼容...

+1

你能解釋一下你正在試圖解決的具體問題? –

+0

你的意思是說'string'等價於'char','varchar','nvarchar','text'等等嗎?你打算對琴絃進行什麼樣的確認? – Tim

+0

你談論ADO.NET,EF或爲什麼你標記爲C#? –

回答

4

如果我正確地解釋這一點,你必須輸入爲字符串,你想要存儲在SQL Server數據庫中,並且列將是不同的類型,如int,floatmoney。您想知道這些字符串是否會成功轉換爲適當的類型。

一種方法是簡單地將字符串作爲參數傳遞給SqlCommand,使用parameterized query,爲參數設置適當的SQL數據類型。當你使用不會轉換的數據執行命令時,你會得到FormatExceptions

更明確地說,您可以嘗試使用適當的SQL數據類型來分析您的字符串。如果轉換失敗,它也會拋出FormatException

即使你解析字符串,我仍然會推薦使用參數化的SQL查詢SqlCommand,或者甚至更好,像Entity Framework這樣的強類型ORM層。 EF會自動將SQL類型映射到.Net類型,因此,如果您嘗試將不兼容的值分配給實體的某個屬性,那麼您將擁有自動數據類型驗證。

代碼來解析SQL數據類型:

try 
{ 
    // throws FormatExcpetion 
    System.Data.SqlTypes.SqlInt16 i = System.Data.SqlTypes.SqlInt16.Parse("test"); 
} 
catch (FormatException) 
{ 
    // handle it 
} 

try 
{ 
    // i will be set to 10 
    System.Data.SqlTypes.SqlInt16 i = System.Data.SqlTypes.SqlInt16.Parse("10"); 
} 
catch (FormatException) 
{ 
    // handle it 
}