Oracle Query未被执行

时间:2016-11-14 20:47:17

标签: c# asp.net oracle web-services

我尝试使用C#WebMethod,ajax和JavaScript从Oracle数据库中检索值,我有另一个页面具有完全相同的功能和方法(使用MSSQL数据库)并且工作正常,但现在我想要用Oracle做到这一点。这是我的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Oracle.DataAccess.Client;
using System.Data;
using System.Configuration;

/// <summary>
/// Summary description for OracleConexion
/// </summary>
public class OracleConexion
{
    OracleConnection conn;
    DataTable dt;
    OracleDataAdapter da;
    OracleDataReader dr;
    DataSet ds;
    OracleCommand cmd;

    public OracleConexion()
    {
        conn = new OracleConnection("Data Source = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = ***.**.**.***)(PORT = ****)))(CONNECT_DATA = (SERVER = DEDICATED)(SID = *****))); User Id = *****; Password = ****;");
    }

    private void Open()
    {
        string canConnect;
        try
        {
            conn.Open();
            canConnect = "Nice";
        }
        catch (Exception ex)
        {
            //Code Updated
            canConnect = ex.Message.ToString();    
        }
        Console.Write(canConnect);
    }

    private void Close()
    {
        try
        {
            conn.Close();
        }
        catch (Exception ex)
        {
        }
    }

    public DataTable ConsultarTablas(string opcion)
    {
        dt = new DataTable();
        ds = new DataSet();
        string sql = "";
        switch (opcion)
        {
            case "Datos":
                sql = "Select Component as Result from BOM_Explosion where TOP_MATERIAL = '-FHN7092A-EF' and ROWNUM <= 5;";
                break;

        }
        try
        {
            Open();
            OracleDataAdapter da = new OracleDataAdapter(sql, conn);
            da.Fill(ds);
            dt = ds.Tables[0];
        }
        catch (Exception ex)
        {
        }
        finally
        {
            Close();
        }
        return dt;
    }
}

这是我的WebMethod

[WebMethod]

public string ObtenerDatosNumeroParte()   
{
    DataTable dt = new DataTable();
    dt = conn.ConsultarTablas("Datos");
    Ticket ti;
    List<Ticket> lista = new List<Ticket>();
    for (int i = 0; i < dt.Rows.Count; i++)   
    {
        ti = new Ticket();            
        ti.Vs = dt.Rows[i]["Result"].ToString();

        lista.Add(ti);
        ti = null;
    }

    JavaScriptSerializer js = new JavaScriptSerializer();
    string lineas = js.Serialize(lista);
    return lineas;
}

测试它似乎我的代码不执行我的查询而我的List总是为空,我做错了什么以及我该怎么做才能解决它?

更新

使用我的字符串canConnect我得到ORA-6413: Connection not open.

0 个答案:

没有答案