none
Texto da textbox não está sendo inserido no banco (SQL Server), mesmo estando NOT NULL RRS feed

  • Pergunta

  • Eu estou fazendo um sistema de registro de moradores de rua e nesse sistema os textos de algumas box tem que serem inseridos no banco, porém quando eu executo, insiro os dados, salvo e verifico no banco, as colunas estão vazias, ficam em branco (se estivessem nulas mostraria NULL).

    Esse é o comando que estou usando para inserir os dados... 

        comando.Parameters.Add("@NOME", SqlDbType.VarChar).Value = frm.txtNome1.Text;
                        comando.Parameters.Add("@SEXO", SqlDbType.VarChar).Value = "MASCULINO";
                        comando.Parameters.Add("@DATANASC", SqlDbType.VarChar).Value = "11/09/2001";
                        comando.Parameters.Add("@RG", SqlDbType.VarChar).Value = "12345678";
                        comando.Parameters.Add("@CPF", SqlDbType.VarChar).Value = "123456578";

    Quando o texto é inserido já no código o sistema funciona normalmente, porém não insere o texto da TextBox



    quinta-feira, 4 de janeiro de 2018 23:27

Respostas

  • Maicon,

    Você está instanciando o Form1 na sua classe DALRegistro, deste modo não haverá nenhuma informação nos campos mesmo.

    Se o Form1 já está visível na tela e você precisa passar uma referência do mesmo para a class DALRegistro altere-a para esta forma:

    namespace FrmProjeto
    {
        class DALRegistro : DALCnn
        {
            public Form1 Formulario { get; set; }
    
    
            // ...
        }
    }

    Daí quando for chamar o método InserirDados a partir do Form1:

    // Este código está no Form1
    
    var dal = new DALRegistro();
    dal.Formulario = this; // passando a referência do formulário atual
    
    dal.InserirDados();
    Aí sim você conseguirá capturar os valores preenchidos no Form1 visível.


    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    sexta-feira, 5 de janeiro de 2018 18:36

Todas as Respostas

  • Boa noite, Maicon

    Tente conforme abaixo, se não der certo, poste o código de inserção completo.

    comando.Parameters.Add("@NOME", SqlDbType.VarChar).Value = this.txtNome1.Text;


    MARIANO1776

    sexta-feira, 5 de janeiro de 2018 00:09
  • Como está a propriedade CommandText do objeto comando?

    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    sexta-feira, 5 de janeiro de 2018 09:51
  • O código que estou usando para fazer a inserção: 

    namespace FrmProjeto
    {
        class DALCnn
        {
            protected string strcnn = "Data Source=.;Initial Catalog=REGISTRO_ZETA1;User ID=sa;Password=123456";
            protected SqlConnection conexao = new SqlConnection();
            protected SqlCommand comando = new SqlCommand();
            protected SqlDataReader datareader;
            protected SqlDataAdapter dataadapter = new SqlDataAdapter();

            private bool disposed = false;

            public void Dispose()
            {
                Dispose(true);
                GC.SuppressFinalize(this);
            }

            private void Dispose(bool disposing)
            {
                if (!this.disposed)
                {
                    if (disposing)
                    {
                        conexao.Dispose();
                        comando.Dispose();
                        datareader.Dispose();
                        dataadapter.Dispose();

                    }
                    disposed = true;
                }
            }
        }
    }

    namespace FrmProjeto
    {
        class DALRegistro : DALCnn
        {
            public int InserirDados()
            {
                Form1 frm = new Form1();
                using (conexao)
                {
                    using (comando)
                    {
                        comando.Parameters.Clear();
                        conexao.ConnectionString = strcnn;
                        conexao.Open();
                        comando.Connection = conexao;

                        comando.CommandText = "INSERT INTO PESSOA (EMAIL, NOME, SEXO, DATANASC, RG, CPF, TEMPO_NA_RUA, MOTIVO_RUA," +
                                                                  "TEM_COMPAINHA, XLOCAL, ID_REGIAO, OBSERVACAO, DATA_CADASTRO)" +
                                                                  "VALUES (@EMAIL, @NOME, @SEXO, @DATANASC, @RG, @CPF, " +
                                                                  "@TEMPO_NA_RUA, @MOTIVO_RUA, @TEM_COMPAINHA," +
                                                                  "@XLOCAL, @ID_REGIAO, @OBSERVACAO, @DATA_CADASTRO)";

                        comando.Parameters.Add("@EMAIL", SqlDbType.VarChar).Value = "teste@teste.com";
                        comando.Parameters.Add("@NOME", SqlDbType.VarChar).Value = frm.txtNome1.Text;
                        comando.Parameters.Add("@SEXO", SqlDbType.VarChar).Value = frm.cmbSexo.Text;
                        comando.Parameters.Add("@DATANASC", SqlDbType.VarChar).Value = frm.mkbData.Text;
                        comando.Parameters.Add("@RG", SqlDbType.VarChar).Value = frm.mkbRG.Text;
                        comando.Parameters.Add("@CPF", SqlDbType.VarChar).Value = frm.mkbCPF.Text;
                        comando.Parameters.Add("@TEMPO_NA_RUA", SqlDbType.VarChar).Value = frm.cmbTempoRua.Text;
                        comando.Parameters.Add("@MOTIVO_RUA", SqlDbType.VarChar).Value = frm.txtMotivoRua.Text;
                        comando.Parameters.Add("@TEM_COMPAINHA", SqlDbType.VarChar).Value = frm.cmbCompainha.Text;
                        comando.Parameters.Add("@XLOCAL", SqlDbType.VarChar).Value = frm.txtLocal.Text;
                        comando.Parameters.Add("@ID_REGIAO", SqlDbType.Int).Value = "1";
                        comando.Parameters.Add("@OBSERVACAO", SqlDbType.VarChar).Value = frm.txtObservacoes.Text;
                        comando.Parameters.Add("@DATA_CADASTRO", SqlDbType.VarChar).Value = DateTime.Now;

                        int resp = comando.ExecuteNonQuery();
                        conexao.Close();
                        return resp;
                    }
                }
            }
        }
    }

    sexta-feira, 5 de janeiro de 2018 18:26
  • Maicon,

    Você está instanciando o Form1 na sua classe DALRegistro, deste modo não haverá nenhuma informação nos campos mesmo.

    Se o Form1 já está visível na tela e você precisa passar uma referência do mesmo para a class DALRegistro altere-a para esta forma:

    namespace FrmProjeto
    {
        class DALRegistro : DALCnn
        {
            public Form1 Formulario { get; set; }
    
    
            // ...
        }
    }

    Daí quando for chamar o método InserirDados a partir do Form1:

    // Este código está no Form1
    
    var dal = new DALRegistro();
    dal.Formulario = this; // passando a referência do formulário atual
    
    dal.InserirDados();
    Aí sim você conseguirá capturar os valores preenchidos no Form1 visível.


    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    sexta-feira, 5 de janeiro de 2018 18:36
  • Funcionou, muito obrigado, Juliano Nunes

    sexta-feira, 5 de janeiro de 2018 19:34