Ir para o conteúdo
carlos_j

[Resolvido] Erro ao inserir dados na base de dados

Mensagens Recomendadas

carlos_j

Estou aqui a desenvolver um pequeno programa, mas estou com um problema ao tentar inserir dados numa tabela do SQL Server. O erro que me dá é o seguinte:

2wd3thl.jpg

O código que tenho é o seguinte:

query = "Insert Into fornecedores (nome, endereco, cidade, cod_postal, telefone, mail) Values (@nome, @endereco, @cidade, @cod_postal, @telefone, @mail)"
	Dim conect As New SqlConnection(conectString)
	Dim comando As New SqlCommand(query, conect)
	comando.Parameters.Add("@nome", SqlDbType.VarChar).Value = txtNome.Text
	comando.Parameters.Add("@endereco", SqlDbType.VarChar).Value = txtMorada.Text
	comando.Parameters.Add("@cidade", SqlDbType.NChar).Value = txtCidade.Text
	comando.Parameters.Add("@cod_postal", SqlDbType.NChar).Value = txtCPostal.Text
	comando.Parameters.Add("@telefone", SqlDbType.TinyInt).Value = txtTelefone.Text
	comando.Parameters.Add("@mail", SqlDbType.VarChar).Value = txtEmail.Text
	conect.Open()
	Dim x As Integer = comando.ExecuteNonQuery()
	If x < 1 Then
		MsgBox("A operação não inseriu nenhum valor")
	Else
		MsgBox("Operação efectuada com sucesso")
	End If
	conect.Close()
	conect = Nothing
	comando = Nothing

Agradecia que alguém me pudesse ajudar.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
NunoDinis

O tipo de dados que estás a passar correspondem aos tipos de dados que tens na BD ?

Nos campos númericos altera para:

val(caixadetexto.text)


Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro.

ndsotware.org

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
carlos_j

O tipo de dados que estás a passar correspondem aos tipos de dados que tens na BD ?

Nos campos númericos altera para:

val(caixadetexto.text)

Os tipos de dados são exactamente iguais aos que tenho na base de dados, mas não funciona.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
carlos_j

Penso que não deve haver um número de telefone com mais de 255 caracteres, ou estou a entender mal o significado do TinyInt? Mas será daí que vem o erro?

Editado por carlos_j

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
thoga31

Não estás a entender o significado. Um TinyInt é um número inteiro muito pequeno que ocupa 8 bits. Ou seja, representa apenas um número entre 0 e 255. NÃO são 255 caracteres!

Um número de telefone tem 9 dígitos, o que necessita de um Int32 - isto tendo em conta os tipos de dados numéricos inteiros: o Int16 só permite até 65535 (5 dígitos), e o Int32 já vai até 4294967295 (10 dígitos).

Uma alternativa é ter o número numa String que é analisada antes de ser inserida na base de dados de forma a confirmar se está num formato aceite: só dígitos, e se forem só números portugueses, só 9 dígitos, ou então 9+5 (para o 00351) ou 9+4 (para o +351, em que neste caso o "+" seria aceite e apenas como 1º caracter).

Mas isto já se torna uma escolha tua.

Editado por thoga31

Knowledge is free! | Occasional Fortnite player

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jpaulino

Penso que não deve haver um número de telefone com mais de 255 caracteres, ou estou a entender mal o significado do TinyInt? Mas será daí que vem o erro?

Não é mais de 255 caracteres mas sim um numero de 0 a 255, ou seja, só consegues guardar na base de dados 3 números. Exemplo 2, 45, 123 mas o 256 já não dá.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
carlos_j

Eu estava a entender que poderia guardar um campo numérico de 0 a 255 carateres. Então é por isso que me dá erro, já que estou a tentar inserir um número maior do que o campo consegue guardar.

Muito obrigado pela ajuda.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.