Вызовы REST возвращают пустой список из Oracle базы данных - PullRequest
0 голосов
/ 21 июня 2020

Я пытаюсь вернуть список из базы данных (Oracle 11G). Теперь, когда я запускаю его непосредственно из Sql Explorer, он возвращает данные. Теперь, имея его внутри REST API, вместо того, чтобы возвращать его, он просто возвращает [] в качестве результатов

Мой код выглядит примерно так:

public IEnumerable<VaultService> Get(string Branch_Desg)
{
    OracleConnection con = new OracleConnection(constr);
    con.Open();
    DataTable dt = new DataTable();
    //string sql = "select  from wemadummyvaulttable where branch_desg = '" + Branch_Desg + "'";
    string sql = "select BRANCH_ID ,BRANCH_NAME ,BRANCHID_NUMBER ,BRANCH_ACCOUNTNO ,BRANCH_DESG ,CURRENCY ,BRANCH_BALANCE from wemadummyvaulttable where branch_desg = '"+Branch_Desg+"' ";
    OracleDataAdapter da = new OracleDataAdapter(sql, con);
    List<VaultService> vr = new List<Models.VaultService>(dt.Rows.Count);
    if (dt.Rows.Count > 0)
    {
        foreach (DataRow vaultrecord in dt.Rows)
        {
            vr.Add(new ReadVaultBal(vaultrecord));
        }
    }
    return vr;
}

Я исправлю часть для Sql инъекций позже, мне просто нужно знать, что мне здесь не хватает и почему он возвращает пустой набор, а не Json результаты

Полный код выглядит следующим образом:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using WEMAVaultREST.Models;
using Oracle.ManagedDataAccess.Client;
using Oracle.ManagedDataAccess.Types;
using System.Data;

namespace JBVaultREST.Controllers
{
    public class VaultServiceController : ApiController
    {
        string constr = "User ID=*; Password=*; Data Source=SAM;";
        // GET api/<controller>
        public IEnumerable<string> Get()
        {
            return new string[] { "value1", "value2" };
        }

        // GET api/<controller>/5
        public string Get(int id)
        {
            return "value";
        }

        // GET api/<controller>/5
        /* public VaultService Get(string Branch_Desg)
         {
             OracleConnection con = new OracleConnection(constr);
             con.Open();
             DataTable dt = new DataTable();

             string sql = "select * from wemadummyvaulttable where branch_desg = '"+Branch_Desg+"'";
             OracleDataAdapter da = new OracleDataAdapter(sql,con);
             da.Fill(dt);
             if (dt.Rows.Count > 0)
             {
                 return new ReadVaultBal(dt.Rows[0]);
             }
             throw new Exception("Account not found");
         }*/

        public IEnumerable<VaultService> Get(string Branch_Desg)
        {
            OracleConnection con = new OracleConnection(constr);
            con.Open();
            DataTable dt = new DataTable();
            //string sql = "select  from wemadummyvaulttable where branch_desg = '" + Branch_Desg + "'";
            string sql = "select BRANCH_ID ,BRANCH_NAME ,BRANCHID_NUMBER ,BRANCH_ACCOUNTNO ,BRANCH_DESG ,CURRENCY ,BRANCH_BALANCE from wemadummyvaulttable where branch_desg = '"+Branch_Desg+"' ";
            OracleDataAdapter da = new OracleDataAdapter(sql, con);
            da.Fill(dt);
            List<VaultService> vr = new List<Models.VaultService>(dt.Rows.Count);
            if (dt.Rows.Count > 0)
            {
                foreach (DataRow vaultrecord in dt.Rows)
                {
                    vr.Add(new ReadVaultBal(vaultrecord));
                }
            }
            return vr;
        }


        // POST api/<controller>
        public void Post([FromBody]string value)
        {
        }

        // PUT api/<controller>/5
        public void Put(int id, [FromBody]string value)
        {
        }

        // DELETE api/<controller>/5
        public void Delete(int id)
        {
        }
    }
}

Класс выглядит так

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using WEMAVaultREST.Models;

namespace JBVaultREST.Models
{
    public class VaultService
    {
        public string Branch_name { get; set; }
        public string BranchID_Number { get; set; }
        public string Branch_AccountNo { get; set; }
        public string Branch_Desg { get; set; }
        public string Currency { get; set; }
        public decimal Branch_Balance { get; set; }
    }
}

public class CreateTransaction : VaultService
{
}

public class ReadVaultBal : VaultService
{
    public ReadVaultBal(DataRow row)
    {
        Branch_name = row["Branch_name"].ToString();
        BranchID_Number = row["BranchID_Number"].ToString();
        Branch_AccountNo = row["Branch_AccountNo"].ToString();
        Branch_Desg = row["Branch_Desg"].ToString();
        Currency = row["Currency"].ToString();
        Branch_Balance = Convert.ToDecimal(row["Branch_Balance"]);
    }

    public string Branch_name { get; set; }
    public string BranchID_Number { get; set; }
    public string Branch_AccountNo { get; set; }
    public string Branch_Desg { get; set; }
    public string Currency { get; set; }
    public decimal Branch_Balance { get; set; }
}

1 Ответ

0 голосов
/ 21 июня 2020

В вашем коде отсутствует da.Fill(dt);.

Также удалите '' из такого запроса.

string sql = "select BRANCH_ID ,BRANCH_NAME ,BRANCHID_NUMBER ,BRANCH_ACCOUNTNO ,BRANCH_DESG ,CURRENCY ,BRANCH_BALANCE from wemadummyvaulttable where branch_desg = " + Branch_Desg + " ";
...