ERRO DE SQL EXCEPTION

ICAROF 15/07/2014 13:26:32
#439554
Olá. Eu estudo visual basic em minha escola á uns 3 anos.

E nunca aconteceu esse erro comigo.


Onde eu cadastro um cliente e ele diz que existe chave duplicada e alguma coisa relacionada á sql exception.

O incrível é que ele cadastra...

Alguém pode me ajudar?
JABA 15/07/2014 15:00:56
#439558
Tira um printscreen e joga aqui pra gente poder entender isso melhor.
FILMAN 15/07/2014 15:49:22
#439560
Nos mostra o seu código para sabermos como você esta relacionando!

Passe apenas o trecho que realiza o cadastro não precisa enviar o projeto
ICAROF 15/07/2014 18:28:30
#439568

ICAROF 15/07/2014 18:30:51
#439569
Acontece isso.... porém vou checar no banco de dados o cadastro foi efetuado!


Procurei em outros fóruns e aqui também... parece que meu servidor está sendo corrompido, sera isso meso?
JABA 15/07/2014 19:57:51
#439572
O motivo de acontecer isso está explicado aqui, veja:

http://support.microsoft.com/kb/970507/pt-br
ICAROF 16/07/2014 00:35:46
#439574
Sabe como resolver isso ?

Eu li tudo, fiz alguns procedimentos e nada aconteceu...
persiste o erro.
GUIMORAES 16/07/2014 10:04:14
#439576
Amigo, tenta utilizar o código abaixo.

  
Dim conn as New SqlConnection(cx)

sql = [Ô]sua sentença[Ô] [ô]Trocar pela sua query

conn.Open()
dim comm as new SqlCommand(sql, conn)

comm.ExecuteNonQuery()


O que está acontecendo, você está executando a query, depois você está executando um reader do insert, acho que isto não está correto.
A sequencia lógica do seu código está meio bagunçada, você está informando o sqlCommand no início passando a variável sql como parâmetro, sendo que você informa a sentença depois. Após ter informado a sentença você aplica a mesma ao commandText, você está sobrescrevendo todo seu código.

Outra dica é você utilizar parâmetros no seu insert. ex:

sql = [Ô]Insert into tabela(codigo, nome) values (@codigo, @nome)

con.Open()
dim comm as new SqlCommand(sql, conn)

comm.Parameters.Add([Ô]@codigo[Ô], txtCodigo.text)
comm.Parameters.Add([Ô]@nome[Ô], txtNome.text)

comm.ExecuteNonQuery()

Obs: Você pode utilizar uma classe para as entidades e criar uma classe CRUD com insert, update, delete, passando somente a classe entidade como parâmetro.
JABA 16/07/2014 13:22:17
#439584
O Guimoraes123 tem razão. Na verdade, como as strings são estáticas, elas não podem ser passadas posteriormente como um ponteiro de referência, pois toda string é única dentro do sistema. Por isso que não é correto passar a string [Ô]sql[Ô] da forma que colocou.

A ordem corretar deveria ser a seguinte:

sql = [Ô]insert into cliente ...[Ô]

dim conn As SqlConnection = New SqlConnection(cx)
dim comm As SqlCommand = New SqlCommand(sql, conn)
dim dta As SqlDataAdapter = New SqlDataAdapter(comm)

conn.Open()

comm.ExecuteNonQuery()

dim dr As SqlDataReader = comm.ExecuteReader
GUIMORAES 16/07/2014 14:23:43
#439589
é isso ai JABA, mais só tem um detalhe que o ICAROF deve saber.

Não é necessário chamar o [Ô]ExecuteNonQuery[Ô] e o [Ô]ExecuteReader[Ô] na mesma instrução, pois cada um tem finalidades distintas.
Para o insert, update, delete, se utiliza somente o [Ô]ExecuteNonQuery[Ô] e o [Ô]ExecuteReader[Ô] para Selects.
O DataAdapter é utilizado para preencher um dataSet ou datatTable por exemplo, não se utiliza para insert, update, delete.

Resumindo, tem código sobrando ai, sem necessidade, e futuramente pode dar dor de cabeça.

Abraços
JABA 25/07/2014 18:38:50
#439875
Perfeito Guimoraes123! é isso aí!

ICAROF, já conseguiu sanar as suas dúvidas? Se sim, por favor, encerre o tópico.
Página 1 de 2 [11 registro(s)]
Faça seu login para responder