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

您的查询中有两个问题

  • 一、命令与连接无关
  • 其次,您正在检索记录,因此您应该使用 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 回答