Usuário com melhor resposta
Texto da textbox não está sendo inserido no banco (SQL Server), mesmo estando NOT NULL

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
- Editado Maicon Santos (ETEC) quinta-feira, 4 de janeiro de 2018 23:40
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.
- Marcado como Resposta Maicon Santos (ETEC) sexta-feira, 5 de janeiro de 2018 19:31
Todas as Respostas
-
-
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.
-
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;
}
}
}
}
}
-
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.
- Marcado como Resposta Maicon Santos (ETEC) sexta-feira, 5 de janeiro de 2018 19:31
-