まとまりのないブログ

something which something is something

sql vb.net

テーブルのフィールドのデータ型を調べる

投稿日:

プログラムで使っているテーブルのあるフィールドが設計ミスで使われていないことに気づき、せっかくだからそのフィールドのデータ型を変えて別の用途に使ってみようというトリッキーなことをやろうとしたけれど、やっぱりやめることにした。こういうのは大抵上手くはいかず、別のもっと良い方法がある。でも、途中まで調べたので記念に残しておく。

やろうとしたことは、テーブル内にある使ってないフィールドのデータ型=char型をlongchar型に変えてみようとした。プログラムの処理としては、フィールドのデータ型がchar型ならlongchar型に変えるsqlを走らせる、というもの。

データ型を取得する際のポイントは、OleDbCommandのExecuteReader().GetDataTypeName(0) という部分。これで対象のフィールドのデータ型が手に入る。実際に取得してみたらdbtype_wvarcharという値が取得できた。

        dim sqlStrType as string = "select field1 from table1"

        Dim isDataType As OleDb.OleDbCommand = cn.CreateCommand
        Dim fieldType As String

        isDataType.CommandText = sqlStrType
        cn.Open()
        fieldType = is_data_type.ExecuteReader().GetDataTypeName(0)
        cn.Close()


        'char型の場合(=DBTYPE_WVARCHAR)
        If fieldType = "DBTYPE_WVARCHAR" Then

            'データ型をテキスト型からメモ型へ変換する
            dim sqlStrChange as string = "alter table table1 alter column field1 longchar"
            Dim changeType As OleDb.OleDbCommand = cn.CreateCommand
            change_type.CommandText = sqlStrChange
            cn.Open()
            changeType.ExecuteNonQuery()
            cn.Close()

       '通常の処理

            'longchar型の場合(=DBTYPE_WLONGVARCHAR)
        ElseIf fieldType = "DBTYPE_WLONGVARCHAR" Then

            '通常の処理

        End If

-sql, vb.net

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

関連記事

no image

DELL PowerEdge T105 のDebianのメモリが1GBしか認識しない

DELL PowerEdge T105にLinux のDebianをインストールしてから大分経過したが、今頃になってメモリが2GB搭載しているはずなのに1GBしか認識されていないことに気づいた。 cd …

no image

MonthCalendarの表示がxpとvistaでサイズが異なる

visual studio 2005のwindowsアプリケーションを作成する場合に使うコントロールの一つにMonthCalendarというのがある。これをフォーム内に配置して表示確認を行ったところ、 …

no image

マシンスペックとデータベースのパフォーマンスの関係

マシンが高性能であればあるほど良いに越したことはないが、データベースソフトウェアのパフォーマンスにおいてはマシンの高性能化はあまり意味があるとはいえない。データベースのパフォーマンスを向上させるために …

no image

VB.NETのwindowsフォームのサイズをマウスで変更できるようにする

windowsフォームのサイズをマウスカーソルをフォームの境界線にもっていくとサイズ変更ができるようにする。方法は、formプロパティのAutoSizeModeをGrowOnlyに設定する。すると、フ …

no image

VB.NETの駄目な所

10年ぶりぐらいにvb.netのソースコードを手直ししたのだけれど、あらためてvb.netってよくわからない仕様になっているなと。特に配列とFor文。 配列を宣言すると+1の要素数で作成される Dim …