Dim MyType as String = "numeric"
Dim sdtype As SqlDbType sdtype = DirectCast([Enum].Parse(GetType(SqlDbType), MyType), SqlDbType)
数値では機能しません。このデータ型の処理方法を知りたいです。前もって感謝します。
Dim MyType as String = "numeric"
Dim sdtype As SqlDbType sdtype = DirectCast([Enum].Parse(GetType(SqlDbType), MyType), SqlDbType)
数値では機能しません。このデータ型の処理方法を知りたいです。前もって感謝します。
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
、文字列をそれらのいずれかに変更しても問題なく動作するはずです。
Dim MyType as String = "float"
SQL Server データベース プロバイダーで使用できるすべてのデータ型は次のとおりです。
BigInt バイナリ 少し シャア 日付時刻 小数 浮く 画像 整数 お金 NChar NText NVarChar 本物 ユニーク識別子 SmallDateTime SmallInt スモールマネー 文章 タイムスタンプ TinyInt VarBinary VarChar 変異体 XML ウット 構造化された 日にち 時間 DateTime2 DateTimeOffset
このリストにない文字列をキャストしようとすると、エラーが発生します。
編集:Accessデータベースで作業しているように見えますか?このような場合は、 ではOleDbType
なく を使用しSqlDbType
、コードを次のように変更します。
Dim sdtype As OleDbType sdtype = DirectCast([Enum].Parse(GetType(OleDbType), MyType), OleDbType)
OleDbType
「数値」が含まれているため、機能するはずです。