2011-08-14 16 views
0

一部のMS SQL型と互換性のある文字列かどうかを確認する方法はありますか? データベースのテーブルに文字列を挿入する前に、文字列を検証します。SQL Serverのデータ型互換性

編集:私はいくつかの文字列がなどvarchar型、char型、ビット、と互換性があるかどうかを確認する方法を探しています...

+1

あなたが解決しようとしている具体的な問題について詳しく説明できますか? –

+0

'string'が' char'、 'varchar'、' nvarchar'、 'text'などと同じであるかのような意味ですか?どのような種類のバリデーションをストリングでやっていますか? – Tim

+0

ADO.NET、EF、またはC#としてマークする理由についてお話ししますか? –

答えて

4

私はこれを正しく解釈していた場合、あなたがそのあなたの文字列として入力を持っていますSQL Serverデータベースに格納する場合、列はint,floatmoneyなどの異なる種類になります。文字列が適切な型に変換されるかどうかを知りたい

parameterized queryを使用して、パラメータとして文字列をSqlCommandに渡し、パラメータに適切なSQLデータ型を設定することが1つの方法です。変換しないデータでコマンドを実行すると、FormatExceptionsが得られます。

さらに明示的に、適切なSQLデータ型で文字列を解析することができます。変換に失敗すると、FormatExceptionもスローされます。

文字列を解析しても、SqlCommand、またはそれ以上のエンティティフレームワークなどの厳密に型指定されたORMレイヤでパラメータ化されたSQLクエリを使用することをお勧めします。 EFはSQL型を.Net型に自動的にマップするので、エンティティのプロパティの1つに互換性のない値を代入しようとすると、データ型の自動検証が自動的に行われます。

コード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 
} 
関連する問題