Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Lívia Rodrigues

[Resolvido] insert e update vb.net

Recommended Posts

Oi gente, como todo mundo que me vê por aqui sabe eu to começando a programar agora e tenho tido muitas duvidas bobas.

Essa me parece ser uma delas.

 

Eu to tentando fazer um insert ou um update, em uma tabela chamada chamada profissionais.

O esquema é o seguinte, o usuario é logado na conta dele por uma variável de session, na área dele ele tem a opção de atualizar suas informações.

O ideal seria que se já houver informações referentes a esse usuário cadastradas seja feito um update, caso contrario seja feito um insert.

estou tentando fazer essa verificação usando o

If myData.HasRows <> 0

Mas na hora de executar da erro, e diz que o myData precisa ser fechado.

 

Nem sei se eu posso fazer do jeito que eu fiz, mas não encontrei informações em outro lugar e sai fazendo qualquer coisa pra ver se funcionava.

 

ta ai o codigo completo:

obs - cortei a parte onde declaro as variaveis que recebem os valores dos campos.

 

Protected Sub ImageButton1_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles ImageButton1.Click

       Dim conexaoMySQL As MySqlConnection
       Dim myAdapter As New MySqlDataAdapter
       ' Dim dsMySQL As DataSet
       Dim strSQL As String


       'Conexao banco de dados
       conexaoMySQL = New MySqlConnection("server=xxx.xxx.xx.x; user id=xxxxxx; password=xxxx; database=xxxx")

       Dim id2 As String = Session("id")

       Try
           conexaoMySQL.Open()
       Catch myerror As MySqlException
           MsgBox("Erro de conexao com o BD")
       End Try
       Dim strSQL1 As String
       Dim strSQL2 As String

       strSQL = "select * from Profissionais where id_usuario='" + id2 + "' "
       Dim myCommand As New MySqlCommand()
       myCommand.Connection = conexaoMySQL
       myCommand.CommandText = strSQL


       myAdapter.SelectCommand = myCommand
       Dim myData As MySqlDataReader

       myData = myCommand.ExecuteReader()

       If myData.HasRows <> 0 Then

           myData.Close()

           strSQL1 = "insert into Profissionais (id_usuario, nome, sobrenome, data_de_nasc, area_de_atuacao, sobre,
atividade_1, atividade_2, atividade_3, estado, cidade, bairro, rua, numero, CEP, complemento,  ultimo_emprego, 
tempo_de_trabalho_de, tempo_de_trabalho_ate, telefone_de_contato, atividades_realizadas,  nome_do_companheiro, 
quanto_tempo,  quandos_filhos, quem_cuida, qual_problema, qual_medicamento) values  ('" & id2 & "','" & nome & "','"
& sobrenome & "','" & data & "','" & area & "','" & sobre & "','" & atividade_1 & "','" & atividade_2 & "','" & 
atividade_3 & "','" & estado & "','" & cidade & "','" & bairro & "','" & rua & "','" & numero & "','" & cep & "','"
& complemento & "','" & ultimo_emprego & "','" & de & "','" & ate & "','" & contato & "','" & atividades_realizadas
& "','" & nome_dele & "','" & quanto_tempo & "','" & quantos_filhos & "','" & quem_cuida & "','" & qual_prob_saude 
& "','" & qual_medicamento & "')"


           Dim myCommand1 As New MySqlCommand()
           myCommand1.Connection = conexaoMySQL
           myCommand1.CommandText = strSQL1




           myAdapter.SelectCommand = myCommand1
           Dim myData1 As MySqlDataReader
           myData1 = myCommand1.ExecuteReader()

           myData1.Close() 


       Else

           strSQL2 = "update Profissionais set nome=" & nome & ", sobrenome=" & sobrenome & ", data_de_nasc=" & 
data & ", area_de_atuacao=" & area & ", sobre=" & sobre & ", atividade_1=" & atividade_1 & ", atividade_2=" & 
atividade_2 & ", atividade_3=" & atividade_3 & ", estado=" & estado & ", cidade=" & cidade & ", bairro=" & bairro &
", rua=" & rua & ", numero=" & numero & ", CEP=" & cep & ", complemento=" & complemento & ", ultimo_emprego=" & 
ultimo_emprego & ", tempo_de_trabalho_de=" & de & ", tempo_de_trabalho_ate=" & ate & ", telefone_de_contato=" & 
contato & ", atividades_realizadas=" & atividades_realizadas & ", nome_do_companheiro=" & nome_dele & ", 
quanto_tempo=" & quanto_tempo & ", quandos_filhos=" & quantos_filhos & ", quem_cuida=" & quem_cuida & ", 
qual_problema=" & qual_prob_saude & ", qual_medicamento=" & qual_medicamento & " where id_usuario =" + id2 + ""

           Dim myCommand2 As New MySqlCommand()
           myCommand2.Connection = conexaoMySQL
           myCommand2.CommandText = strSQL2



           myAdapter.SelectCommand = myCommand2
           Dim myData2 As MySqlDataReader
           myData2 = myCommand2.ExecuteReader()

           myData2.Close()


       End If

   End Sub
End Class 

 

 

Eu sei que a duvida é boba mas eu agradeço se puderem dar uma olhadinha.

Valeeu :)

Beijão :*

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi quintelab, obrigada pela resposta.

O Que acontece é que ali eu preciso verificar se existe algum registro na tabela cujo id seja igual a variavel + id2 +

Caso nao haja será feito um insert. Se já houver, um update.

 

Por isso o

If myData.HasRows = 0 Then

(Obs: o sinal estava trocado, desculpe)

 

quando eu passo pro servidor e executo o site no navegador aparece o seguinte erro:

 

Server Error in '/Workbook_teste' Application.

 

There is already an open DataReader associated with this Connection which must be closed first.

 

Já tentei fecha-lo em todos os lugares possíveis de forma que ainda sim a query execute.

mas o erro persiste :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.