Как отфильтровать 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()); } } }