//methode permettant d'insérer une question dans la base de donnée
        public int CreateQuestion(Question q)
        {
            using (SqlConnection sqlConnection1 = new SqlConnection(_connectionString))                                                                                                                        // using permet de refermer la connection après ouverture
            {
                SqlCommand cmd = new SqlCommand                                                                                                                                                                // objet cmd me permet d'exécuter des requêtes SQL
                {
                    CommandType = CommandType.Text,                                                                                                                                                            // methode permettant de definir le type de commande (text = une commande sql; Storeprocedure= le nom de la procedure stockée; TableDirect= le nom d'une table.
                    CommandText = "INSERT Question (QuestionCategoryId, QuestionDifficultyId, QuestionTypeId,Content) VALUES (@CategoryId,@DifficultyId, @QuestionTypeID,@Content); SELECT SCOPE_IDENTITY();", // stock la requete sql dans commandText. SCOPE_IDENTITY renvoie l'Id de  la question inseré.
                    Connection  = sqlConnection1,                                                                                                                                                              // etablie la connection.
                };


                // permet de definir les variables values dans CommandText.
                cmd.Parameters.AddWithValue("@CategoryId", q.Category.Id);
                cmd.Parameters.AddWithValue("@DifficultyId", q.Difficulty.Id);
                cmd.Parameters.AddWithValue("@QuestionTypeID", q.Type.Id);
                cmd.Parameters.AddWithValue("@Content", q.Content);

                sqlConnection1.Open();                                                     //ouvre la connection à la base de donnée.

                var result = cmd.ExecuteScalar();                                          // execute la requete et return l'element de la première ligne à la première colonne

                if (result != null && int.TryParse(result.ToString(), out var questionId)) // convertit result.ToString() en int et le stock dans questionId
                {
                    return(questionId);
                }

                return(0);
            }
        }
Beispiel #2
0
        public void CreateSurvey(string name, List <int> questionIds)
        {
            using (SqlConnection sqlConnection1 = new SqlConnection(_connectionString)) // using permet de refermer la connection après ouverture
            {
                sqlConnection1.Open();                                                  //ouvre la connection à la base de donnée.
                var transaction = sqlConnection1.BeginTransaction();

                try
                {
                    var cmd = new SqlCommand                                                           // objet cmd me permet d'exécuter des requêtes SQL
                    {
                        CommandType = CommandType.Text,                                                // methode permettant de definir le type de commande (text = une commande sql; Storeprocedure= le nom de la procedure stockée; TableDirect= le nom d'une table.
                        CommandText = "INSERT Survey (Name) VALUES (@Name); SELECT SCOPE_IDENTITY();", // stock la requete sql dans commandText. SCOPE_IDENTITY renvoie l'Id de  la question inseré.
                        Connection  = sqlConnection1,                                                  // etablie la connection.
                        Transaction = transaction
                    };

                    // permet de definir les variables values dans CommandText.
                    cmd.Parameters.AddWithValue("@Name", name);

                    var result = cmd.ExecuteScalar();                                        // execute la requete et return l'element de la première ligne à la première colonne

                    if (result != null && int.TryParse(result.ToString(), out var surveyId)) // convertit result.ToString() en int et le stock dans questionId
                    {
                        foreach (var questionId in questionIds)
                        {
                            var cmd2 = new SqlCommand                                                                         // objet cmd me permet d'exécuter des requêtes SQL
                            {
                                CommandType = CommandType.Text,                                                               // methode permettant de definir le type de commande (text = une commande sql; Storeprocedure= le nom de la procedure stockée; TableDirect= le nom d'une table.
                                CommandText = "INSERT Survey_Question (SurveyId,QuestionId) VALUES (@SurveyId,@QuestionId);", // stock la requete sql dans commandText. SCOPE_IDENTITY renvoie l'Id de  la question inseré.
                                Connection  = sqlConnection1,                                                                 // etablie la connection.
                                Transaction = transaction
                            };

                            // permet de definir les variables values dans CommandText.
                            cmd2.Parameters.AddWithValue("@SurveyId", surveyId);
                            cmd2.Parameters.AddWithValue("@QuestionId", questionId);

                            cmd2.ExecuteNonQuery();
                        }
                    }

                    transaction.Commit();
                }
                catch
                {
                    transaction.Rollback();
                    throw;
                }
            }
        }