Cadastrar datas C Sharp e banco de dados SQL Server

05/12/2016

0

Boa noite pessoal, estou com um problema e não sei mais o que fazer.
Bom, o problema é quando vou fazer um cadastro, dá um erro nos campos do tipo datetime que diz assim: "Erro: A cadeia de caracteres de entrada não estava em um formato correto.". Abaixo está o código da conexão com o banco de dados sql server(DT_ENTRADA e DT_HEMEROTECA são os campos do tipo datetime) e também o código do evento do botão. Agradeço desde já a ajuda.

Código da conexão com o banco de dados sql server:

public void Incluir_exemplar(ExemplarModelos exemplar)
{
//conexão
SqlConnection cn = new SqlConnection();
SqlTransaction t = null;

try
{
cn.ConnectionString = Dados.StringDeConexao;

//command
SqlCommand cmd = new SqlCommand();

cmd.Connection = cn;

cmd.CommandText = @"INSERT INTO Exemplar
(CD_OBRA, DS_SUBTITULO, CD_VOLUME, NR_EXEMPLAR, NR_TOMBO, NR_EDICAO, ANO_EDICAO, NR_PAGINAS, LG_EMPRESTIMO, DT_ENTRADA, " +
"TP_PERIODICIDADE, DT_HEMEROTECA, TP_SERIECOL, DS_SERIECOL, DS_LOCALIZACAO, CD_ISBN, CD_EDITORA, CD_CDD) VALUES (@CD_OBRA, " +
"@DS_SUBTITULO, @CD_VOLUME, @NR_EXEMPLAR, @NR_TOMBO, @NR_EDICAO, @ANO_EDICAO, @NR_PAGINAS, @LG_EMPRESTIMO, @DT_ENTRADA, " +
"@TP_PERIODICIDADE, @DT_HEMEROTECA, @TP_SERIECOL, @DS_SERIECOL, @DS_LOCALIZACAO, @CD_ISBN, @CD_EDITORA, @CD_CDD);select @@IDENTITY;";

//command Obra
SqlCommand cmd2 = new SqlCommand();

cmd2.Connection = cn;

cmd2.CommandText = @"SELECT CD_OBRA FROM Obra";

//command Editora
SqlCommand cmd3 = new SqlCommand();

cmd3.Connection = cn;

cmd3.CommandText = @"SELECT CD_EDITORA FROM Editora";

//command Cdd
SqlCommand cmd4 = new SqlCommand();

cmd4.Connection = cn;

cmd4.CommandText = @"SELECT CD_CDD FROM Cdd";

cn.Open();

t = cn.BeginTransaction(IsolationLevel.Serializable);//default

cmd.Transaction = t;

cmd2.Transaction = t;

cmd3.Transaction = t;

cmd4.Transaction = t;

cmd.Parameters.AddWithValue("@CD_OBRA", exemplar.CodigoObra);
cmd.Parameters.AddWithValue("@DS_SUBTITULO", exemplar.SubTituloExemplar);
cmd.Parameters.AddWithValue("@CD_VOLUME", exemplar.CodigoVolExemplar);
cmd.Parameters.AddWithValue("@NR_EXEMPLAR", exemplar.NumExemplar);
cmd.Parameters.AddWithValue("@NR_TOMBO", exemplar.NumTomboExemplar);
cmd.Parameters.AddWithValue("@NR_EDICAO", exemplar.NumEdicaoExemplar);
cmd.Parameters.AddWithValue("@ANO_EDICAO", exemplar.AnoEdicaoExemplar);
cmd.Parameters.AddWithValue("@NR_PAGINAS", exemplar.NumPagsExemplar);
cmd.Parameters.AddWithValue("@LG_EMPRESTIMO", exemplar.PermissaoEmprestimo);
cmd.Parameters.AddWithValue("@DT_ENTRADA", exemplar.DataEntradaExemplar);
cmd.Parameters.AddWithValue("@TP_PERIODICIDADE", exemplar.TipoPeriodicidadeExemplar);
cmd.Parameters.AddWithValue("@DT_HEMEROTECA", exemplar.DataHemerotecaExemplar);
cmd.Parameters.AddWithValue("@TP_SERIECOL", exemplar.TipoSerieOuColecao);
cmd.Parameters.AddWithValue("@DS_SERIECOL", exemplar.DescSerieOuColecao);
cmd.Parameters.AddWithValue("@DS_LOCALIZACAO", exemplar.LocalizacaoExemplar);
cmd.Parameters.AddWithValue("@CD_ISBN", exemplar.CodigoIsbn);
cmd.Parameters.AddWithValue("@CD_EDITORA", exemplar.CodigoEdi);
cmd.Parameters.AddWithValue("@CD_CDD", exemplar.CodigoCdd);
cmd2.Parameters.AddWithValue("@CD_OBRA", exemplar.CodigoObra);
cmd3.Parameters.AddWithValue("@CD_EDITORA", exemplar.CodigoEdi);
cmd4.Parameters.AddWithValue("@CD_CDD", exemplar.CodigoCdd);

exemplar.IdExemplar = Convert.ToInt32(cmd.ExecuteScalar());

cmd2.ExecuteNonQuery();

cmd3.ExecuteNonQuery();

cmd4.ExecuteNonQuery();

t.Commit();
}
catch (Exception ex)
{
t.Rollback();
throw new Exception("Servidor no Servidor:" + ex.Message);
}
finally
{
cn.Close();
}
}


Código do evento do botão:


private void bt_incluir_exe_Click(object sender, EventArgs e)
{

try
{
ExemplarModelos exemplar = new ExemplarModelos();

exemplar.CodigoObra = (int)comboBoxCodigoObra.SelectedValue;
exemplar.SubTituloExemplar = textBoxSubTituloExe.Text;
exemplar.CodigoVolExemplar = int.Parse(textBoxVolumeExe.Text);
exemplar.NumExemplar = int.Parse(textBoxNumExe.Text);
exemplar.NumTomboExemplar = int.Parse(textBoxNumTomboExe.Text);
exemplar.NumEdicaoExemplar = textBoxNumEdicaoExe.Text;
exemplar.AnoEdicaoExemplar = textBoxAnoEdicaoExe.Text;
exemplar.NumPagsExemplar = int.Parse(textBoxNumPaginasExe.Text);
exemplar.PermissaoEmprestimo = CBPermissaoEmprestimoExe.Text;

exemplar.DataEntradaExemplar = Convert.ToDateTime(maskedTextBoxDataEntradaExe.Text);

exemplar.TipoPeriodicidadeExemplar = CBTipoPeriodicidade.Text;

exemplar.DataHemerotecaExemplar = Convert.ToDateTime(maskedTextBoxDataHemerotecaExe.Text);

exemplar.TipoSerieOuColecao = CBSerieColecaoExe.Text;
exemplar.DescSerieOuColecao = textBoxDescSerieOuColecaoExe.Text;
exemplar.LocalizacaoExemplar = textBoxLocalizacaoExe.Text;
exemplar.CodigoIsbn = textBoxIsbnExe.Text;
exemplar.CodigoEdi = (int)comboBoxCodigoEditoraExe.SelectedValue;
exemplar.CodigoCdd = Convert.ToString(comboBoxCodCdd.SelectedValue);

ExemplarBLL obj = new ExemplarBLL();

obj.Incluir_exemplar(exemplar);

MessageBox.Show("O exemplar foi incluído com sucesso!");

textBoxIDExe.Text = Convert.ToString(exemplar.IdExemplar);

AtualizaGridExemplar();
}
catch (Exception ex)
{
MessageBox.Show("Erro: " + ex.Message);
}
}

}
Lucas

Lucas

Responder

Posts

08/01/2017

Paulo Santos

Boa tarde Lucas, pelo tempo que vc postou acredito que já encontrou uma maneira de solucionar isso.
As vezes a data no SQL esta no padrão americano yyyy-MM-dd.
E para não dar erro apenas converto a data em uma string com esse formato.

DT_ENTRADA.ToString("yyyy-MM-dd") 
DT_HEMEROTECA.ToString("yyyy-MM-dd") 
Responder

26/01/2017

Mooney55

http://www.linhadecodigo.com.br/artigo/2791/cadastro-de-um-consultorio-em-windows-forms-com-csharp-e-sql-server-parte-1.aspx
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar