まとまりのないブログ

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

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

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

no image

mschartが表示されない

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

no image

SQL_CALC_FOUND_ROWSの効果

mysqlでは行数のカウントをするのにSQL_CALC_FOUND_ROWSというのを使うことができるようだが、where句に条件を指定した場合だとcount(*)でレコードをカウントする場合と大差な …

no image

メモ

現在改良中の家計簿ソフトのデータモデルを変更するかどうかについてのメモ。今のところはmicrosoftのaccessのjetという名前のデータベースでデータを管理している。作る前まではデータを保存する …

no image

datagridにバインドしたデータが120秒経つと消える・・・

訳の分からない現象が現れた。accessのmdbへselect文を発行して取得したテーブルをdatagridコントロールにバインドするようにプログラムした。そしてデバッグで表示を確かめようとしたところ …