- PR -

Mapping

1
投稿者投稿内容
damepg
大ベテラン
会議室デビュー日: 2003/03/19
投稿数: 229
お住まい・勤務地: 東京都内
投稿日時: 2003-10-24 18:31
下記はSQLの結果をDataTable型で取得するFunctionですが、
SQLの条件文で
Cmd.Parameters.Add("@ItemNo", SqlDbType.char, 10)
このようなパラメータを設定している箇所があります。
カラム名のバイト長が変更になった場合、「10」を変更するのはわずらわしいです。
Mappingというやり方があると聞いたことがあるのですが、どうソースを
修正したらよいでしょうか?

Public Function get_Item_Detail(ByVal Con As SqlConnection, ByVal ItemNo As String) As DataTable

Dim Cmd As SqlCommand
Dim strSQL As String 'SQL編集領域

Cmd = Con.CreateCommand

strSQL = ""
strSQL = strSQL & "SELECT * FROM T_CnOrd_Item "
strSQL = strSQL & "WHERE ItemNo = @ItemNo "
Cmd.CommandText() = strSQL

Cmd.Parameters.Clear()
Cmd.Parameters.Add("@ItemNo", SqlDbType.char, 10)
Cmd.Parameters("@ItemNo").Value = ItemNo

'データテーブルの取得し、返す。
get_Item_Detail = GetDataTable(Cmd)

End Function
アティ
ベテラン
会議室デビュー日: 2003/08/14
投稿数: 91
お住まい・勤務地: KANAGAWA
投稿日時: 2003-10-26 15:37
手元に環境がないのであってるか分かりませんが、下記でいけませんか?
C#ですので、適宜変換してください。

SqlParameter param = Cmd.CreateParameter();
param.ParameterName = "@ItemNo";
param.Value = ItemNo;
Cmd.Parameters.Add(param);
damepg
大ベテラン
会議室デビュー日: 2003/03/19
投稿数: 229
お住まい・勤務地: 東京都内
投稿日時: 2003-10-27 15:30
下記のやり方をVB.NETに変換したら出来ました。
ありがとうございました。

引用:

アティさんの書き込み (2003-10-26 15:37) より:
手元に環境がないのであってるか分かりませんが、下記でいけませんか?
C#ですので、適宜変換してください。

SqlParameter param = Cmd.CreateParameter();
param.ParameterName = "@ItemNo";
param.Value = ItemNo;
Cmd.Parameters.Add(param);


Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-10-27 18:04
引用:

アティさんの書き込み (2003-10-26 15:37) より:

SqlParameter param = Cmd.CreateParameter();
param.ParameterName = "@ItemNo";
param.Value = ItemNo;
Cmd.Parameters.Add(param);


補足:
 データベースからデータを取ってくるときには、Sizeプロパティは不要。また、オブジェクトからデータタイプもわかるので、Objectクラスとして作ったオブジェクトを入れるのでなければデータタイプも不要。
>Cmd.Parameters.Add("@ItemNo", SqlDbType.char, 10)
>Cmd.Parameters("@ItemNo").Value = ItemNo
→Cmd.Parameters.Add("@ItemNo", ItemNo)
#「Cmd.Parameters.Add("@ItemNo").Value = ItemNo」という表記を見たような?

 反対に、データベースへデータを投げるときには必要。この場合、例えばDataAdapter.FillSchemaメソッドなどでスキーマ(データテーブルの設定情報)が取得されていれば、
DataTable.Columns(columnIndex).MaxLengthを使用できます。
1

スキルアップ/キャリアアップ(JOB@IT)