Member 13849478 Ответов: 1

Как отфильтровать MS-DB и построить диаграмму на языке C#?


У меня есть такая база данных:
T0 T1 T2
main_1 subcategory_1 Reason_1
main_2 subcategory_2 Reason_2
main_3 subcategory_3 Reason_3
main_4 subcategory_4 Reason_4
main_5 subcategory_2 Reason_4
main_1 subcategory_3 Reason_3
main_2 subcategory_2 Reason_2
main_1 subcategory_3 Reason_2
main_2 subcategory_3 Reason_3


Я хочу нарисовать круговую диаграмму для всех подкатегорий main_1. также нарисуйте круговую диаграмму для Main_1 -> subcategory_1 по общим причинам есть

Что я уже пробовал:

Я уже пробовал с
foreach (var item in Selected_TABLENAME)
                       {

                           if (item.Contains("All_Red_Events"))
                           {

                               foreach(var iteam1 in EventCategories)
                               {
                                   foreach(var iteam2 in SubEventCategories)
                                   {
                                           OleDbCommand cmd6 = new OleDbCommand();
                                           OleDbDataReader reader2 = null;
                                           cmd6 = new OleDbCommand("select  [T2] FROM " + item.ToString() + " WHERE ( [T0]='" + iteam1.ToString() + "'" +" and" + " [T1]='" + iteam2.ToString() + "')" + "", connection2);
                                           reader2 = cmd6.ExecuteReader();

                                           while (reader2.Read())
                                           {

                                               Subcategoriesreason.Add(reader2["T0"].ToString());
                                           }
                                   }
                               }
                            }

Member 13812021

Есть много способов сделать это, однако это зависит от того, что вы делаете. Это Веб-страница Razor, приложение win или что-то еще. Круговая диаграмма будет основана на значении % или int. Что вы используете для создания диаграммы?

Member 13849478

У меня есть база данных MS-access .Я получаю данные из этой базы данных. Круговая диаграмма предназначена для значения int. и я использую эту диаграмму для отображения некоторых данных (например, сколько ошибок приходит и в какой области больше нравится...)

Richard Deeming

cmd6 = new OleDbCommand("select  [T2] FROM " + item.ToString() + " WHERE ( [T0]='" + iteam1.ToString() + "'" +" and" + " [T1]='" + iteam2.ToString() + "')" + "", connection2);


Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.

Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]

К сожалению, вы не можете использовать параметр для имени таблицы, поэтому вы должны убедиться, что он тщательно проверен, и значение не может быть изменено пользователем.

Два других значения должны быть переданы в качестве параметров:
using (OleDbCommand cmd6 = new OleDbCommand("select [T2] FROM [" + item + "] WHERE [T0] = ? and [T1] = ?", connection2))
{
    cmd6.Parameters.AddWithValue("T0", iteam1);
    cmd6.Parameters.AddWithValue("T1", iteam2);
    
    using (OleDbDataReader reader2 = cmd6.ExecuteReader())
    {
        while (reader2.Read())
        {
            Subcategoriesreason.Add(reader2["T0"].ToString());
        }
    }
}

1 Ответов

Рейтинг:
2