現在下記のようなコードを書いています。
メインフォームで、クラス1のSqlPublish関数にSQL文とバインド変数名とその値を入れた配列を渡しており、データテーブルが返ってくるようにしているのですが、クラス1の DApt.Fill(DSet, "M_IRAI") あたりで止まってしまいます。そして「変数の名前/数が無効です」というエラーがでるのですが、どこが間違っているのか分かりません。教えて頂けないでしょうか。
----Main Form-------------------
Dim StBi As New System.Text.StringBuilder()
StBi.Append("select IRAISHA_CD AS コード,NAME_KN AS カナ,NAME _KJ AS 漢字,") StBi.Append("substr(POST_NO,1,3) || '-' ||substr(POST_NO,4) AS 郵便 番号,ADDRESS1 AS 住所1,ADDRESS2 AS 住所2,TEL,FA X ") StBi.Append("from M_IRAI ") StBi.Append("where NAME_KN like :P_kana and NAME_KJ like :P_kan j ") StBi.Append("order by IRAISHA_CD") Dim str() As String = {"P_kana", Kana_txt.Text, "P_kanji", Kanji_txt.Text} Dim c1 As New lass1 c1.SqlPublish(StBi.ToString(), Str)
-----Class1------------------------
Public Function SqlPublish(ByVal sql As String, ByVal str() As String) As DataTable
Dim DSet As DataSet Try Using Comd As New OracleCommand(sql, Conn) 'Comdオブジェクトの生成 For i = 0 To str.Length / 2 Step 2 Comd.BindByName = True 'OracleCommandにパラメータを追加 Dim para As String = str(i) Comd.Parameters.Add(para, OracleDbType.Varchar2, ParameterDirection.Input) Dim kakuninn As String = str(i + 1) Comd.Parameters.Item(para.ToString()).Value = "%" & kakuninn & "%" Next Console.WriteLine(sql) Dim DApt As New OracleDataAdapter DApt.SelectCommand = Comd DSet = New DataSet DApt.Fill(DSet, "M_IRAI") Return DSet.Tables("M_IRAI") End Using Catch ex As Exception MessageBox.Show(ex.Message) 'Return 0 End Try End Function
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。