-1

希望有人可以提供帮助。我Oracle.ManagedDataAccess.Client在我的 VB.NET 项目中使用从 Oracle 11g 数据库中提取信息。

我的项目使用硬编码的字符串,但我希望将日期时间更改为绑定变量,因为我听说服务器负载更容易。

我可以使用以下内容Using Ocommand As New OracleCommand(和硬编码的日期时间字符串,但无法Using使用直接连接和绑定变量替换以下内容:

    ''Build SQL Query and set variables
    Dim d_start_date As DateTime = New DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.Hour - 1, 0, 0)
    Dim p_start_date As OracleParameter = New OracleParameter
    p_start_date.OracleDbType = OracleDbType.Date
    p_start_date.Value = d_start_date
    p_start_date.ParameterName = "fromDateParam"

    Dim d_end_date As DateTime = New DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.Hour, 0, 0)
    Dim p_end_date As OracleParameter = New OracleParameter
    p_end_date.OracleDbType = OracleDbType.Date
    p_end_date.Value = d_end_date
    p_end_date.ParameterName = "toDateParam"


    ''Setup Datatable, connections and pull data
    Dim myDT As New DataTable
    Dim Oconn As New OracleConnection(my_CREDS & my_COMMS)

    Dim Ods As New DataSet
    Dim Ocommand As OracleCommand = New OracleCommand("select " & _
        "username as Recipient, " & _
        "to_char(CreatedDate,'YYYY-mm-dd HH24:MI:SS') as CREATEDDATE " & _
        "from " & _
        "tbl.one " & _
        "where " & _
        "CreatedDate >= :fromDateParam " & _
        " and CreatedDate < :toDateParam;", Oconn)
    Ocommand.Parameters.Add(p_start_date)
    Ocommand.Parameters.Add(p_end_date)
    Using Oda As New OracleDataAdapter(Ocommand)
        Oda.Fill(myDT)
    End Using
    Ocommand.Dispose()

这样做会在尝试填充数据表时出错:Oda.Fill(myDT)。谁能解释为什么?我对 Oracle 数据库查询还是很陌生。

4

1 回答 1

0

经过一番折腾,我发现我;在 SQL 语句的末尾添加了一个额外的内容,取自 Oracle SQL Developer 中的原始语句。删除它后,代码执行得像梦一样!

于 2017-10-03T08:30:17.823 回答