private void fillTextBoxes() { WorkWithDB workDB = new WorkWithDB(); int code = workDB.openConnection(); if (code == 1) { SQLiteConnection scon = workDB.SqLiteConnection; SQLiteCommand command = new SQLiteCommand( string.Format("SELECT COUNT(login) FROM User;"), scon); amoutOfUsersBox.Text = doRequest(command); command = new SQLiteCommand( string.Format("SELECT COUNT(id_training) FROM Training;"), scon); amountOfTrainBox.Text = doRequest(command); command = new SQLiteCommand( string.Format("SELECT COUNT(number) FROM Exercise;"), scon); amountOfExBox.Text = doRequest(command); workDB.closeConnection(); } else { MessageBox.Show("Не возможно подключиться к БД"); } }
/// <summary> /// Удаляет упражнение из системы и связанные с ней тренировки. /// </summary> /// <param name="number"></param> /// <param name="numberOfLevel"></param> private void deleteExercise(int number, int numberOfLevel) { WorkWithDB wdb = new WorkWithDB(); wdb.openConnection(); try { SQLiteConnection scon = wdb.SqLiteConnection; SQLiteCommand command = new SQLiteCommand( string.Format("DELETE FROM Exercise WHERE number={0} AND numberOfLevel={1};", number, numberOfLevel), scon); int num = command.ExecuteNonQuery(); command = new SQLiteCommand(string.Format ("SELECT id_training FROM Training WHERE numberOfLevel={0};", numberOfLevel), scon); string ids = ""; DataTable dt = null; SQLiteDataAdapter da = new SQLiteDataAdapter(command); DataSet ds = new DataSet(); da.Fill(ds); dt = ds.Tables[0]; if (dt == null) { MessageBox.Show("БД пуста или запрос не вернул данных"); } else { int rows = dt.Rows.Count; for (int i = 0; i < rows; i++) ids += dt.Rows[i][0].ToString() + ","; } ids = ids.Substring(0, ids.Length - 1); command = new SQLiteCommand(string.Format("DELETE FROM StatisticsOfExercises WHERE id_training IN ({0}) AND number={1};", ids, number), scon); command.ExecuteNonQuery(); } catch { } finally { wdb.closeConnection(); } }
public void fillPieChartMistakes() { WorkWithDB workDB = new WorkWithDB(); int code = workDB.openConnection(); if (code == 1) { SQLiteConnection scon = workDB.SqLiteConnection; SQLiteCommand command = new SQLiteCommand( string.Format("SELECT u.login, SUM(st.amountOfMistakes) FROM " + "User u JOIN Training tr ON u.login=tr.login " + "JOIN StatisticsOfExercises AS st ON tr.id_training=st.id_training " + "WHERE st.number={0} AND tr.numberOfLevel={1} " + "GROUP BY u.login;", exerBox.Text, levelBox.Text), scon); DataTable dt = null; SQLiteDataAdapter da = new SQLiteDataAdapter(command); DataSet ds = new DataSet(); da.Fill(ds); dt = ds.Tables[0]; if (dt == null) { MessageBox.Show("БД пуста или запрос не вернул данных"); } else { int amount = dt.Rows.Count; int[] mas = new int[amount]; //Получаем распределение числа пройденных упражнений по пользователям //каждая ячейка относится к одному пользователю for (int i = 0; i < amount; i++) { mas[i] = Convert.ToInt32(dt.Rows[i][1].ToString()); } //сортируем массив Array.Sort(mas); forMistakesChart(mas); } workDB.closeConnection(); } }
public void fillDataGreed() { WorkWithDB workDB = new WorkWithDB(); int code = workDB.openConnection(); if (code == 1) { SQLiteConnection scon = workDB.SqLiteConnection; SQLiteCommand command = new SQLiteCommand( string.Format("SELECT tr.login, tr.dataTimeOfTraining, st.speed, st.amountOfMistakes " + "FROM Training tr JOIN StatisticsOfExercises st ON tr.id_training=st.id_training " + "WHERE tr.numberOfLevel = {0} AND st.number= {1} ;", levelBox.Text, exerBox.Text), scon); DataTable dt = null; SQLiteDataAdapter da = new SQLiteDataAdapter(command); DataSet ds = new DataSet(); da.Fill(ds); dt = ds.Tables[0]; if (dt == null) { MessageBox.Show("БД пуста или запрос не вернул данных"); } else { listOfExercisesStat.DataSource = dt; listOfExercisesStat.Columns[0].HeaderText = "Логин"; listOfExercisesStat.Columns[1].HeaderText = "Дата/время тренировки"; listOfExercisesStat.Columns[2].HeaderText = "v, симв./мин"; listOfExercisesStat.Columns[3].HeaderText = "Количество\n\r ошибок"; } } else { MessageBox.Show("Ошибка при соединении с БД"); } workDB.closeConnection(); }
public void fillPieChartSpeed() { //запрос должен суммировать число упражнений пройденных каждым пользователем и //группировать по пользователю //потом беру полученные чиселки и получаю из них свои стат данные //смотрю сколько упражнений прошел каждый пользователь //а суммирую пользователей, //на диаграмме будут пользователи WorkWithDB workDB = new WorkWithDB(); int code = workDB.openConnection(); if (code == 1) { SQLiteConnection scon = workDB.SqLiteConnection; SQLiteCommand command = new SQLiteCommand( string.Format("SELECT u.login, AVG(st.speed) FROM " + "User u JOIN Training tr ON u.login=tr.login " + "JOIN StatisticsOfExercises AS st ON tr.id_training=st.id_training " + "WHERE st.number={0} AND tr.numberOfLevel={1} " + "GROUP BY u.login;", exerBox.Text, levelBox.Text), scon); DataTable dt = null; SQLiteDataAdapter da = new SQLiteDataAdapter(command); DataSet ds = new DataSet(); da.Fill(ds); dt = ds.Tables[0]; if (dt == null) { MessageBox.Show("БД пуста или запрос не вернул данных"); } else { int amount = dt.Rows.Count; int[] mas = new int[amount]; //Получаем распределение числа пройденных упражнений по пользователям //каждая ячейка относится к одному пользователю for (int i = 0; i < amount; i++) { mas[i] = (int)(Convert.ToDouble(dt.Rows[i][1].ToString())); } //сортируем массив Array.Sort(mas); forSpeedChart(mas); } workDB.closeConnection(); } }