Ravers Posted May 27, 2014 at 01:54 PM Report #557128 Posted May 27, 2014 at 01:54 PM 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.
bioshock Posted May 27, 2014 at 02:01 PM Report #557129 Posted May 27, 2014 at 02:01 PM (edited) Edit: Pensei ter visto o tópico na secção de PHP, de maneiras que escrevi código de PHP.. 😄 Obrigado @nelsonr. Edited May 27, 2014 at 02:13 PM by bioshock
nelsonr Posted May 27, 2014 at 02:02 PM Report #557130 Posted May 27, 2014 at 02:02 PM 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 😄
Ravers Posted May 27, 2014 at 02:36 PM Author Report #557134 Posted May 27, 2014 at 02:36 PM (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 May 27, 2014 at 05:15 PM by Ravers
killerbest Posted May 29, 2014 at 09:18 AM Report #557475 Posted May 29, 2014 at 09:18 AM (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 May 29, 2014 at 09:19 AM by killerbest
edazevedo Posted May 29, 2014 at 09:30 AM Report #557479 Posted May 29, 2014 at 09:30 AM 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.
killerbest Posted May 29, 2014 at 09:33 AM Report #557481 Posted May 29, 2014 at 09:33 AM 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 🙂
Ravers Posted May 29, 2014 at 11:12 AM Author Report #557524 Posted May 29, 2014 at 11:12 AM 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.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now