私は自分の会社でC#アプリケーションを開発しています。
アプリケーションは、ADO.Netを介してSQLServerデータベースを使用します。
このアプリケーションは、.NetFramework4に付属のSQLServer用のADO.Netデータプロバイダーを使用します。
プログラムでvarcharフィールドに文字列を挿入するときに問題が発生します。
例
次の列を持つMY_TABLEという名前のデータベーステーブルについて考えてみましょう。
- MY_FIRST_COL int
- MY_SECOND_COL varchar(250)
SS Management Studio内で次のSQLクエリを実行して、レコード(REC1)をMY_TABLEに挿入します。
insert into MY_TABLE (1, "");
次に、SSMSを使用してREC1を選択します。
次に、MY_SECOND_COLフィールドに含まれている文字列をコピーします。
次に、文字列をNotepad++に貼り付けます。
文字列が0文字で構成されていることに気付きました。
OK、それは理にかなっています!
次に、SqlCommandオブジェクトを使用して、プログラムでレコード(REC2)をMY_TABLEに挿入します。
CommandTextプロパティに含まれる文字列は次のとおりです。
insert into MY_TABLE (@p0, @p1);
2番目のパラメータに対応するSqlParameterオブジェクトのプロパティに含まれるいくつかの値は次のとおりです。
- DbType:System.Data.DbType.AnsiStringFixedLength
- 方向:入力
- IsNullable:false
- ParameterName: "@ p1"
- 精度:0
- スケール:0
- サイズ:0
- SqlDbType:Char
- 価値 : ""
次に、SSMSを使用してREC2を選択します。
次に、MY_SECOND_COLフィールドに含まれている文字列をコピーします。
次に、文字列をNotepad++に貼り付けます。
文字列が250文字で構成されていることに気付きました。
なんで ?
どんな助けでも大歓迎です