まとまりのないブログ

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

menustripのショートカットキーが効かない

また嵌ってしまったので備忘録。vb.netのmenustripコントロールに配置されたアイテムにshortcutkeysプロパティでキーを割り当てても、ショートカットが機能しない現象について。shor …

no image

mschartが表示されない

vb.netで作成したwindowsアプリケーションにグラフを表示させてみようと思って、mschartというグラフ描画コンポーネントを使うことにした。そして、実装が終わってリリースしたものを他のマシン …

no image

シンプルな家計簿 バージョン0.930を公開しました

シンプルな家計簿 バージョン0.930はこちらから https://www.crossdrive.net/wp/software/cdn-01 やってみたかったこととして表の配色パターンを変更するとい …

no image

インデックス列には日本語よりも英数字を使うほうが良いのか悪いのか

テーブル内に存在するレコード数をカウントする時、where句にインデックス列を条件として指定して実行時間がどれほどかかるかテストをしてみた。テーブルの全レコード数は約1600万レコードで、カウントすべ …

no image

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

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