0

私は本当にシンプルなWebサービスに取り組んでおり、助けを得たいと思っています。Visual StudioからストックWebサービスを取得し、ODP.NETに関する非常に限られた知識で変更を開始しました。

事実上、私がやろうとしているのは、サービスに渡す変数を含むSQLクエリから一連の結果を返すことです。WR_Premiseは、クエリが正しく機能した後に組み込みたい変数です。WCFテストクライアントを使用して関数を呼び出しInvalidOperationExceptionましたが、次のコードを実行しようとすると、が表示されます。

Public Function GetData(ByVal value As Integer) As String Implements IService1.GetData
        Dim wrpremise As Integer
        Dim state As String
        Dim queryString As String = _
         "select MV_OUTAGE_DURATION.CAUSE_DESC, MV_OUTAGE_DURATION.DEV_NAME, MV_OUTAGE_DURATION.DEV_TYPE_NAME, MV_OUTAGE_DURATION.EVENTNUM, MV_OUTAGE_DURATION.OUT_MINUTES, MV_OUTAGE_DURATION.OFF_DTS , MV_OUTAGE_DURATION.RESTORE_DTS , MV_OUTAGE_DURATION.SYS_RESP_TYPE from MV_we_outage_premise, MV_OUTAGE_DURATION where mv_we_outage_premise.evntnum = MV_OUTAGE_DURATION.eventnum and mv_we_outage_premise.we_premise = '995184' order by(MV_OUTAGE_DURATION.RESTORE_DTS)"
        Dim command As New OracleCommand(queryString)

    value = wrpremise

    Dim oradb As String = "Data Source=****;User Id=******;Password=***********;"
    Dim conn As New OracleConnection(oradb)
    conn.Open()
    state = conn.State.ToString()

    command.ExecuteNonQuery()

    MsgBox(state)
    conn.Close()
    state = conn.State.ToString()
    MsgBox(state)

    Return String.Format("You entered: {0}", value)
End Function

サービスを機能させて、サービスを終了したときに状態を返すことはできますcommand.ExecuteNonQuery()が、それはあまり役に立ちません...また、結果をXMLに出力する簡単な方法を知っている人はいますか?

4

1 に答える 1

1

クエリの 2 つの問題

  • まず、コマンドは接続に関連付けられていません
  • 次に、レコードを取得しているため、DataReader または DataAdapter を使用して DataTable を埋める必要があります。

コマンド接続用

    command.Connection = conn

記録の取得について

    Dim reader as OracleDataReader = command.ExecuteReader()
    while (reader.Read())
    {
        ... use your data         
    }

OracleDataReaderのリファレンスはこちら、OraclaDataAdapterのリファレンスはこちら

于 2012-11-10T08:08:14.880 に答える