- - PR -
Mapping
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 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-10-26 15:37
手元に環境がないのであってるか分かりませんが、下記でいけませんか?
C#ですので、適宜変換してください。 SqlParameter param = Cmd.CreateParameter(); param.ParameterName = "@ItemNo"; param.Value = ItemNo; Cmd.Parameters.Add(param); | ||||
|
投稿日時: 2003-10-27 15:30
下記のやり方をVB.NETに変換したら出来ました。
ありがとうございました。
| ||||
|
投稿日時: 2003-10-27 18:04
補足: データベースからデータを取ってくるときには、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