none
O formato da cadeia de inicialização não está de acordo com a especificação iniciada no índice 0 RRS feed

  • Pergunta

  • Boa noite!!

    Não estou conseguindo inserir os dados criados na minha tabela do SQL server, e quando clico no evento para inserir aparece este erro descrito no Título :/. Será que alguém poderia me ajudar? Sou meio leigo kk.

      Segue o meu código de conexão:

     SqlConnection sqlcon = null;
            private string strCon = "Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=cadastro_cliente;Data Source=DESKTOP-9BPMVSD";
            private string strSql = String.Empty;

    private void btnCadastrar_Click(object sender, EventArgs e)
            {
                strSql = "insert into tb_cadastro (nome_cliente, email, idade, cpf, cnpj) values (@nome, @email, @idade, @cpf, @cnpj)";

                sqlcon = new SqlConnection(strCon.ConnectionString);

                SqlCommand comando = new SqlCommand (strSql, sqlcon);

                comando.Parameters.Add("@nome", SqlDbType.VarChar).Value = txtNome.Text;
                comando.Parameters.Add("@email", SqlDbType.VarChar).Value = mskEmail.Text;
                comando.Parameters.Add("@idade", SqlDbType.VarChar).Value = mskIdade.Text;
                comando.Parameters.Add("@cpf", SqlDbType.VarChar).Value = mskCpf.Text;
                comando.Parameters.Add("@cnpj", SqlDbType.VarChar).Value = mskCnpj.Text;
                comando.Parameters.Add("@tipo", SqlDbType.VarChar).Value = rbJud.Checked || rbFis.Checked;



                strCon = "insert into tb_cadastro (tipo cliente) values (@tipo)";
                if (rbJud.Checked)
                {
                    comando.Parameters.AddWithValue("@tipo cliente", "Juridico");
                }
                else
                {
                    comando.Parameters.AddWithValue("@tipo cliente", "Fisico");
                }


                try
                {
                    sqlcon.Open();
                    comando.ExecuteNonQuery();

                    MessageBox.Show("Cadastro efetuado com sucesso!");

                }
                catch(Exception ex)
                {
                    MessageBox.Show(ex.Message);

                }
                finally
                {
                    sqlcon.Close();
                }


    quinta-feira, 15 de março de 2018 00:15

Respostas

  • Bom dia.

    Estou verifcando seu código e tenho três observações:

    strCon = "insert into tb_cadastro (tipo cliente) values (@tipo)";
                if (rbJud.Checked)
                {
                    comando.Parameters.AddWithValue("@tipo cliente", "Juridico");
                }
                else
                {
                    comando.Parameters.AddWithValue("@tipo cliente", "Fisico");
                }

    1 - O nome do campo tipo cliente em geral não é aceito. Tente alterar o nome do campo para tipo_cliente, ou tente utilizar colchetes, assim  strCon = "insert into tb_cadastro ([tipo cliente]) values (@tipo). No Access funciona, no SQL Server nunca tentei.

    2 - Nos parametros em negrito acima, veja que você utiliza @tipo e depois @tipo cliente. Tente alterar o nome do paramentro para @tipo_cliente.

    3 - Você está tentando fazer dois inserts de uma vez. O SQL Server não permite (o MySql permite). Tente montar um insert único, em vez de:

    strSql = "insert into tb_cadastro (nome_cliente, email, idade, cpf, cnpj) values (@nome, @email, @idade, @cpf, @cnpj)";

    strCon = "insert into tb_cadastro (tipo cliente) values (@tipo)";

    try
                {
                    sqlcon.Open();
                    comando.ExecuteNonQuery();

    Faça os testes e retorne. C# não é minha especialidade e posso ter errado em algum ponto.


    MARIANO1776

    quinta-feira, 15 de março de 2018 12:10

Todas as Respostas

  • Bom dia.

    Estou verifcando seu código e tenho três observações:

    strCon = "insert into tb_cadastro (tipo cliente) values (@tipo)";
                if (rbJud.Checked)
                {
                    comando.Parameters.AddWithValue("@tipo cliente", "Juridico");
                }
                else
                {
                    comando.Parameters.AddWithValue("@tipo cliente", "Fisico");
                }

    1 - O nome do campo tipo cliente em geral não é aceito. Tente alterar o nome do campo para tipo_cliente, ou tente utilizar colchetes, assim  strCon = "insert into tb_cadastro ([tipo cliente]) values (@tipo). No Access funciona, no SQL Server nunca tentei.

    2 - Nos parametros em negrito acima, veja que você utiliza @tipo e depois @tipo cliente. Tente alterar o nome do paramentro para @tipo_cliente.

    3 - Você está tentando fazer dois inserts de uma vez. O SQL Server não permite (o MySql permite). Tente montar um insert único, em vez de:

    strSql = "insert into tb_cadastro (nome_cliente, email, idade, cpf, cnpj) values (@nome, @email, @idade, @cpf, @cnpj)";

    strCon = "insert into tb_cadastro (tipo cliente) values (@tipo)";

    try
                {
                    sqlcon.Open();
                    comando.ExecuteNonQuery();

    Faça os testes e retorne. C# não é minha especialidade e posso ter errado em algum ponto.


    MARIANO1776

    quinta-feira, 15 de março de 2018 12:10
  • Boa tarde.

    Conseguiu algum avanço?


    MARIANO1776

    segunda-feira, 9 de abril de 2018 17:39