1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Erro ao salvar informações no banco de dados

Olá, galera. Estou fazendo uma aplicação em C# no Visual Studio 2012, mas ao salvar os dados que estão no formulário aparece o seguinte erro:

System.Data.SqlClient.SqlException (0x80131904): Falha ao converter o varchar valor 'Jundiaí' para o tipo de dados int.

   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)

   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)

   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)

   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)

   at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async, Int32 timeout, Boolean asyncWrite)

   at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite)

   at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()

   at Loja.frmLoja_Agropet.dbInsert() in d:\Estudo C#\Loja\Loja\Loja Agropet.cs:line 60

ClientConnectionId:da21b8ba-7e26-4771-ac03-1bc2f9cf67d6Erro ao cadastrar.

Segue abaixo o código da conexão e o insert no banco:

using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Loja
{
    public partial class frmLoja_Agropet : Form
    {
        const string _strConn = @"Data Source=.\SQLExpress;Initial Catalog=Loja;User ID=Estudo;Password=123";

        string tipoanimal, racaanimal, nomeanimal, nomeTutor, Vsql, endereco, bairro, cidade, estado, email, localizar;
        string cpf, cep, telefone, celular; 

        SqlConnection dbConn = null;
        SqlCommand dbCmd = null;


        public frmLoja_Agropet()
        {
            InitializeComponent();
        }

        public void dbInsert()
        {
            dbConn = new SqlConnection(_strConn);
            dbCmd = new SqlCommand();

            try
            {
                tipoanimal = tipodoAnimalComboBox.Text;
                racaanimal = racadoAnimalTextBox.Text;
                nomeanimal = nomedoAnimalTextBox.Text;
                cpf = cpfMaskedTextBox.Text;
                nomeTutor = nomedoTutorTextBox.Text;
                endereco = enderecoTextBox.Text;
                bairro = bairroTextBox.Text;
                cidade = cidadeTextBox.Text;
                estado = estadoTextBox.Text;
                cep = cepMaskedTextBox.Text;
                telefone = telefoneMaskedTextBox.Text;
                celular = celularMaskedTextBox.Text;
                email = emailTextBox.Text;



                //valor = double.Parse(tb_valor.Text);
                Vsql = "INSERT INTO Clientes(TipodoAnimal,RacadoAnimal,NomedoAnimal,NomedoTutor,Cpf,Endereco,Bairro,Cep,Cidade,Estado,Telefone,Celular,email,Localizar) VALUES ('" + tipoanimal + "','" + racaanimal + "','" + nomeanimal + "','" + nomeTutor + "','" + cpf + "','" + endereco + "','" + bairro + "','" + cidade + "','" + estado + "','" + cep + "','" + telefone + "','" + celular + "','" + email + "','" + localizar + "')";

                dbCmd.CommandText = Vsql;
                dbCmd.Connection = dbConn;

                dbConn.Open();
                dbCmd.ExecuteNonQuery();
                dbConn.Close();
                MessageBox.Show("Cadastro Salvo com sucesso", "Erro");
            }
            catch (SqlException e)
            {
                MessageBox.Show(e + "Erro ao cadastrar", "Erro");
            }
        }
private void btnCep_Click(object sender, EventArgs e)
        {
            string xml = "http://cep.republicavirtual.com.br/web_cep.php?cep=@cep&formato=xml"
                .Replace("@cep", cepMaskedTextBox.Text);

            DataSet ds = new DataSet();

            ds.ReadXml(xml);

            enderecoTextBox.Text = ds.Tables[0].Rows[0][6].ToString();
            bairroTextBox.Text = ds.Tables[0].Rows[0][4].ToString();
            cidadeTextBox.Text = ds.Tables[0].Rows[0][3].ToString();
            estadoTextBox.Text = ds.Tables[0].Rows[0][2].ToString();
        }

        private void btnSalvar_Click(object sender, EventArgs e)
        {
            dbInsert();
        }
    }
}

O erro fala que o problema está na linha dbCmd.ExecuteNonQuery();, que o campo cidade não pode ser convertida de varchar valor 'Jundiaí' para o tipo de dados int.

Gostaria de saber como corrigir este problema. Já fiz várias pesquisa mas não tive bons resultados.

Obrigado.

  • Rodrigo, na sua tabela no campo CIDADE vc definiu como varchar mesmo. Pois se no banco esta esperando um int e vc passar um varchar com certeza nunca ira funcionar. Confira la na sua tabela, talvez vc possa ter definido o campo como int por engano.

    Tony_Martins   29 de nov de 2015
  • Então Tony no banco de dados esta com Varchar(100) mesmo.

    Rodrigo Guize   30 de nov de 2015
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

2 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags sql ou faça a sua própria pergunta.