0
Dim MyType as String = "numeric"
Dim sdtype As SqlDbType  sdtype = DirectCast([Enum].Parse(GetType(SqlDbType), MyType), SqlDbType) 

数値では機能しません。このデータ型の処理方法を知りたいです。前もって感謝します。

4

1 に答える 1

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、文字列をそれらのいずれかに変更しても問題なく動作するはずです。

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「数値」が含まれているため、機能するはずです。

于 2012-10-03T12:11:41.753 に答える