Exemplo n.º 1
0
        public void Insert(Jogador j)
        {
            //Connection Factory: Classe que gerencia o local da conexão, tendo o método responsável por obter a conexão
            cf = new ConnectionFactory();

            //StringBuilder: Construtor de String e o Método Append concatena cada linha dentro da variável chamada query
            StringBuilder query = new StringBuilder();

            query.AppendLine("INSERT INTO TB_JOGADOR ");
            query.AppendLine("(DS_NOME, NR_NUMERO, ID_POSICAO_JOGADOR, ID_SELECAO_JOGADOR, DS_IMAGEM_JOGADOR, DS_TIPO_IMAGEM_JOGADOR, DS_CAMINHO_IMAGEM_JOGADOR) ");
            query.AppendLine("VALUES (@DS_NOME, @NR_NUMERO, @ID_POSICAO_JOGADOR, @ID_SELECAO_JOGADOR, @DS_IMAGEM_JOGADOR, @DS_TIPO_IMAGEM_JOGADOR, @DS_CAMINHO_IMAGEM_JOGADOR) ");
            query.AppendLine("SELECT SCOPE_IDENTITY(); ");//Linha Responsável por retornar id que foi Inserido

            //CreateCommand: Inicializa o objeto SqlCommand associando o comando com a conexão do Banco onde será executado
            cf.Comando = cf.Conexao.CreateCommand();

            //Abaixo os parametros que no momento da execução serão substituídos pelos valor das propriedades

            cf.Comando.Parameters.AddWithValue("@DS_NOME", j.DsNome);
            cf.Comando.Parameters.AddWithValue("@NR_NUMERO", j.NrCamisa);
            cf.Comando.Parameters.AddWithValue("@ID_POSICAO_JOGADOR", j.IdPosicaoJogador);
            cf.Comando.Parameters.AddWithValue("@ID_SELECAO_JOGADOR", j.IdSelecaoJogador);

            //Se o array de bytes estiver diferente de vazio, salvará, caso contrário manda nulo para o banco
            if (j.DsImagemJogador.Length != 0)
            {
                cf.Comando.Parameters.AddWithValue("@DS_IMAGEM_JOGADOR", j.DsImagemJogador);
            }
            else
            {
                cf.Comando.Parameters.AddWithValue("@DS_IMAGEM_JOGADOR", DBNull.Value);
            }

            //Se o caminho da imagem não estiver vazio, salvará, caso contrário mando nulo para o banco
            if (!string.IsNullOrEmpty(j.DsCaminhoImagemJogador))
            {
                cf.Comando.Parameters.AddWithValue("@DS_CAMINHO_IMAGEM_JOGADOR", j.DsCaminhoImagemJogador);
                cf.Comando.Parameters.AddWithValue("@DS_TIPO_IMAGEM_JOGADOR", j.DsTipoImagem);
            }
            else
            {
                cf.Comando.Parameters.AddWithValue("@DS_CAMINHO_IMAGEM_JOGADOR", DBNull.Value);
                cf.Comando.Parameters.AddWithValue("@DS_TIPO_IMAGEM_JOGADOR", DBNull.Value);
            }

            //CommandType indica que o comando será via texto, poderia ser uma procedure no banco de dados por exemplo.
            cf.Comando.CommandType = CommandType.Text;//Clicar com o Direito para adicionar Using

            //CommandText: Propriedade do objeto command que receberá o texto do comando a ser executado.
            cf.Comando.CommandText = query.ToString();

            //Abre a conexão
            cf.Conexao.Open();

            //ExecuteScalar retornar a primeira coluna do último select executado
            //Como o Scope_identity retorna a chave primária inserida, ele retornará o ID que guardaremos para o objeto Pessoa
            j.IdJogador = Convert.ToInt32(cf.Comando.ExecuteScalar());

            //Fecha a conexão
            cf.Conexao.Close();
        }