Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

carlos_j

[Resolvido] Erro ao inserir dados na base de dados

Recommended Posts

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.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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?

Edited by carlos_j

Share this post


Link to post
Share on other 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.

Edited by thoga31

Knowledge is free!

Share this post


Link to post
Share on other 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á.

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other sites
thoga31

Atenção: caracteres é uma coisa, dado numérico é outra.

Aconselho-te a reveres bem estes conceitos.


Knowledge is free!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.