Jump to content

Recommended Posts

Posted

Boa tarde,

Eu tenho um programa que introduz dados numa base de dados MYSQL.

O INSERT está a funcionar correctamente, mas não sei como fazer o SELECT para apresentar os dados.

E já agora será que da para selecionar o ultimo ID (chave primária) criado e apresentá-lo numa textbox ou algo parecido? O id é auto incriment e é chave primária.

Obrigado.

Posted

Boas,

para leres dados tens de usar o ExecuteReader. Vê aqui um exemplo:

http://www.devart.com/dotconnect/mysql/docs/Devart.Data.MySql~Devart.Data.MySql.MySqlCommand.html

Não testei, mas para ires buscar o ID do registo inserido deve bastar executar logo a seguir ao insert um executereader com o comando "SELECT LAST_INSERT_ID()" (ou, como é apenas 1 campo e registo podes usar o ExecuteScalar)

bioshock, é VB.NET, não PHP 😄

Posted (edited)

Boas,

para leres dados tens de usar o ExecuteReader. Vê aqui um exemplo:

http://www.devart.com/dotconnect/mysql/docs/Devart.Data.MySql~Devart.Data.MySql.MySqlCommand.html

Não testei, mas para ires buscar o ID do registo inserido deve bastar executar logo a seguir ao insert um executereader com o comando "SELECT LAST_INSERT_ID()" (ou, como é apenas 1 campo e registo podes usar o ExecuteScalar)

bioshock, é VB.NET, não PHP 😄

Peço desculpa mas sou mesmo um principiante em programação, e estou um pouco confuso.

Aqui está o meu código para gravar os registos: http://postimg.org/image/i1gvqoxa7/

Devo introduzir esta linha de código ("Dim mySelectQuery As String = "SELECT LAST_INSERT_ID()") depois do INSERT certo?

EDIT: Eu introduzi o código do link, mas penso que está posicionado mal porque dá um erro depois de adicionar o registo: http://postimg.org/image/ilzbjbivh/

EDIT2: Consegui obter o valor introduzindo o código desta forma: http://postimg.org/image/wk1r0mqf3/

Edited by Ravers
Posted (edited)
Dim query As String = "Select Max(IDIMO+1) IDIMO from ioriginais"
Dim dr As OracleDataReader

Dim cmd As New OracleCommand(query, conn)
dr = cmd.ExecuteReader
dr.Read()

id.Text = dr("IDIMO").ToString

Este código vai buscar o ultimo id e depois vai somar +1

IDIMO - id auto incremento

ioriginais - tabela

Edited by killerbest
Posted

killerbest nunca se deve usar a função Max para estes casos devido a problemas de concorrencia entre sessões, no oracle deves usar sequencias.

A abordagem pelo last_insert_id() é a mais correcta porque garante o valor por sessão.

Posted

killerbest nunca se deve usar a função Max para estes casos devido a problemas de concorrencia entre sessões, no oracle deves usar sequencias.

A abordagem pelo last_insert_id() é a mais correcta porque garante o valor por sessão.

Ok obrigado pelo conselho 🙂

Posted

Boas,

Ja consegui resolver usando last_insert_id(), está a resultar na perfeição por isso prefiro nao mudar nada por agora 😄

Obrigado a todos pela ajuda.

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.