использование Oracle Exadata и C #: подкачка данных из Oracle для извлечения данных - PullRequest
0 голосов
/ 02 июля 2019

Я использую Oracle Exadata в качестве базы данных и использую его в веб-приложении ASP.NET C #.Я пытаюсь запросить данные из базы данных и получить данные в таблице данных.Данные слишком велики, так как я использую опцию select *.Ошибка в таблице данных из-за проблем с памятью, а также неправильный подход.

Я пытаюсь проверить, можно ли применить модель подкачки.

Я использовал приведенную ниже модель кода с MS SQL, которая работает.Я не уверен, как это можно применить в запросе Oracle.Ниже приведен код для MS SQL.

    public List<DataTable> GetDataSet()
    {
        var dataTables = new List<DataTable>();
        var totalRecords = 0;
        var tableIndex = 1;

        using (var cn = new SqlConnection {ConnectionString = ConnectionString})
        {
            using (var cmd = new SqlCommand {Connection = cn})
            {
                var selectStatement =
                    @"SELECT Cust.CustomerIdentifier,
                        Cust.CompanyName,
                        Cust.ContactName,
                        C.[Name] AS Country
                    FROM dbo.Customers AS Cust
                         INNER JOIN dbo.Countries AS C 
                            ON Cust.CountryIdentifier = C.CountryIdentifier
                    ORDER BY Cust.CustomerIdentifier
                    OFFSET @Offset ROWS 
                    FETCH NEXT 25 ROWS ONLY;";

                var countStatement = "SELECT COUNT(Cust.CustomerIdentifier) FROM dbo.Customers AS Cust";
                cmd.CommandText = countStatement;

                cn.Open();

                totalRecords = Convert.ToInt32(cmd.ExecuteScalar());

                cmd.CommandText = selectStatement;
                cmd.Parameters.Add("@OffSet", SqlDbType.Int);
                for (var index = 0; index < totalRecords; index++)
                {
                    if (index % 25 == 0)
                    {

                        cmd.Parameters["@OffSet"].Value = index;
                        var dt = new DataTable() {TableName = $"Table{tableIndex}"};
                        dt.Load(cmd.ExecuteReader());
                        dataTables.Add(dt);
                        tableIndex += 1;
                    }
                }
            }
        }

        return dataTables;
    }

Я пытаюсь достичь той же функциональности с Oracle.Как запросить Oracle, чтобы получить данные таким же образом.Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...