Jump to content
Sign in to follow this  
joaogomes

problema com o identity no sqlserver

Recommended Posts

joaogomes

Boa Tarde. Estou com um problema quando pretendo guardar um registo numa base de dados em sqlserver. a tabela em causa tem o campo IDTrabalhador como chave primária e identity(1,1), para ir inserindo este valor automaticamente. Mas está a dar um erro e não deixa inserir. O meu código é o seguinte:

Imports System.Text
Imports System.Security.Cryptography
Public Class FrmAdicionarFuncionario

Private Shared TripleDES As New TripleDESCryptoServiceProvider
Private Shared MD5 As New MD5CryptoServiceProvider

' Definição da chave de encriptação/desencriptação
Private Const key As String = "CHAVE12345teste"

''' <summary>
''' Calcula o MD5 Hash
''' </summary>
''' <param name="value">Chave</param>
Public Shared Function MD5Hash(ByVal value As String) As Byte()

' Converte a chave para um array de bytes
Dim byteArray() As Byte = ASCIIEncoding.ASCII.GetBytes(value)
Return MD5.ComputeHash(byteArray)

End Function

''' <summary>
''' Encripta uma string com base em uma chave
''' </summary>
''' <param name="stringToEncrypt">String a encriptar</param>
Public Shared Function Encrypt(ByVal stringToEncrypt As String) As String

Try

' Definição da chave e da cifra (que neste caso é Electronic
' Codebook, ou seja, encriptação individual para cada bloco)
TripleDES.Key = MD5Hash(key)
TripleDES.Mode = CipherMode.ECB

' Converte a string para bytes e encripta
Dim Buffer As Byte() = ASCIIEncoding.ASCII.GetBytes(stringToEncrypt)
Return Convert.ToBase64String(TripleDES.CreateEncryptor().TransformFinalBlock(Buffer, 0, Buffer.Length))

Catch ex As Exception
MessageBox.Show(ex.Message, My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)

Return String.Empty

End Try

End Function



''' <summary>
''' Desencripta uma string com base em uma chave
''' </summary>
''' <param name="encryptedString">String a decriptar</param>
Public Shared Function Decrypt(ByVal encryptedString As String) As String

Try

' Definição da chave e da cifra
TripleDES.Key = MD5Hash(key)
TripleDES.Mode = CipherMode.ECB

' Converte a string encriptada para bytes e decripta
Dim Buffer As Byte() = Convert.FromBase64String(encryptedString)
Return ASCIIEncoding.ASCII.GetString(TripleDES.CreateDecryptor().TransformFinalBlock(Buffer, 0, Buffer.Length))

Catch ex As Exception
MessageBox.Show(ex.Message, My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)

Return String.Empty

End Try

End Function
Private Sub InserirVoluntario_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.TrabalhadoresTableAdapter.Fill(Me.MuseuDataSet.Trabalhadores)


End Sub
Sub Limpar_Campos()
'IDTrabalhadorTextBox.DataBindings.Clear()
NomeTextBox.DataBindings.Clear()
UtilizadorTextBox.DataBindings.Clear()
PasswordTextBox.DataBindings.Clear()

'IDTrabalhadorTextBox.Text = Nothing
NomeTextBox.Text = Nothing
UtilizadorTextBox.Text = Nothing
PasswordTextBox.Text = Nothing

'IDTrabalhadorTextBox.Focus()
End Sub


Sub Adicionar()
Limpar_Campos()
End Sub




Private Sub BtCancelar_Click(sender As System.Object, e As System.EventArgs) Handles BtCancelar.Click
Me.Close()
End Sub

Private Sub BtAdicionar_Click(sender As System.Object, e As System.EventArgs) Handles BtAdicionar.Click
Dim adapter_trabalhador As New MuseuDataSetTableAdapters.TrabalhadoresTableAdapter
Try

adapter_trabalhador.Insert(IDTrabalhadorTextBox.Text, NomeTextBox.Text, UtilizadorTextBox.Text, Encrypt(PasswordTextBox.Text))
MsgBox("Registo adicionado com sucesso!", MsgBoxStyle.Information, Me.Text)
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
End Class

O erro é o seguinte: A conversão da cadeia " " para o tipo integer não é válida.

Edited by Caça
GeSHi

Share this post


Link to post
Share on other sites
Caça

Se o campo é de numeração automática, não o podes tentar inserir como estás a fazer nesta linha

adapter_trabalhador.Insert(IDTrabalhadorTextBox.Text, NomeTextBox.Text, UtilizadorTextBox.Text, Encrypt(PasswordTextBox.Text))


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
joaogomes

Eu sei, já o tinha retirado e tudo, mas nesse caso, essa linha de código ficava toda a azul porque lhe faltava um argumento. Não percebo. O mesmo código com mysql funcionou, com sqlserver não funciona.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • 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.