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(); }