Лучший способ получить данные JSON из реляционных баз данных? - PullRequest
0 голосов
/ 18 сентября 2018

Я не знаю, что мой заголовок понятен, но на самом деле я хочу знать, какой из них лучше?

1-Создание класса объекта и получение данных из mssql db с помощью цикла

2-Получение данных из sql db в формате json

3-что-то еще ..

Я думаю, цикл может быть медленным при работе с большими данными. Однако, возможно, использование json path может быть медленнее, чем цикл.

Пример для 1 ( СОЗДАНИЕ ОБЪЕКТА В ПЕТЛЯХ )

List<objExample > retVal = new List<objExample >();
objExample item;
SqlConnection con = new SqlConnection("CONNECTION STRING");
SqlDataAdapter da;
SqlCommandcmd;
da = new SqlDataAdapter("Select a,b from table", con);
con.Open();
DataTable dt = new DataTable();
da.Fill(dt);
con.Close();
foreach (DataRow itemdr in dt.Rows)
{
item = new objExample();
item.A= itemdr["a"].ToString();
item.B= itemdr["b"].ToString();
item.HasError = false;
retVal.Add(item);
}
return retVal;

Пример для 2 ( ДЛЯ ПУТИ JSON )

List<objExample > retVal;
SqlConnection con = new SqlConnection("CONNECTION STRING");
SqlDataAdapter da;
SqlCommandcmd;
da = new SqlDataAdapter("Select a,b from table for json path", con);
con.Open();
DataTable dt = new DataTable();
da.Fill(dt);
con.Close();
string _json = dt.Rows[0][0].ToString();
retVal = JsonConvert.DeserializeObject<List<objExample>>(_json);
return retVal;

Я попробовал оба из них с небольшими данными, но меня это не удовлетворило.

PS: я писал коды в уме. Извините за неправильные коды и плохой английский.

Пожалуйста, ведите меня. Спасибо.

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Подсчитать количество команд, которые зависят от количества строк.Вид, как мы делаем Big O Сложность.Я хотел бы сделать что-то вроде:

  using (var sqlCommand = new SqlCommand("Select a,b from table for json path", con))
{
   try
     {
       using (var reader = sqlCommand.ExecuteReader())
        {
           while (reader.Read())
           {
             item = new objExample();
             item.A= reader["a"].ToString();
             item.B= reader["b"].ToString();
             item.HasError = false;
             retVal.Add(item);

            }
           }

      }

}

Имейте в виду, что соединение sql будет оставаться открытым, пока вы делаете это, так что его вызов суждения, если вы хотите сделать это после цикла илив петле.И da.Fill или использование вышеописанного одинаково внутри, все еще будет повторяться по всем строкам.Что касается использования json, я бы не стал этого делать, если вы не спросите, является ли сохранение в виде файла Json лучшим вариантом, чем в sql.Это совершенно другой вопрос.

Вы можете использовать PLINQ для параллельной обработки данных, как только они появятся в списке, даже для описанной выше десериализации вы можете попробовать PLINQ.

0 голосов
/ 18 сентября 2018

Просто для ясности, вы читаете полную таблицу?

Если цель состоит в том, чтобы получить данные, которые хранятся в json, и, возможно, выполнить некоторые запросы к ним, DB NoSQL кажется более подходящим, чемSQL один.

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