Usuário com melhor resposta
O formato da cadeia de inicialização não está de acordo com a especificação iniciada no índice 0

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 void btnCadastrar_Click(object sender, EventArgs e)
private string strCon = "Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=cadastro_cliente;Data Source=DESKTOP-9BPMVSD";
private string strSql = String.Empty;
{
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();
}
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
- Sugerido como Resposta Junior Galvão - MVPMVP quinta-feira, 15 de março de 2018 12:36
- Marcado como Resposta Filipe B CastroModerator quarta-feira, 2 de maio de 2018 21:32
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
- Sugerido como Resposta Junior Galvão - MVPMVP quinta-feira, 15 de março de 2018 12:36
- Marcado como Resposta Filipe B CastroModerator quarta-feira, 2 de maio de 2018 21:32
-