Jump to content

Erro ao inserir dados na base de dados


carlos_j
Go to solution Solved by thoga31,

Recommended Posts

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.

Link to comment
Share on other sites

  • Solution

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!

Link to comment
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
×
×
  • Create New...

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.