1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Fazer consulta a bd com vb.net

Discussão em 'Programação' iniciada por sarammg, 9 de Junho de 2006. (Respostas: 6; Visualizações: 3187)

  1. Para inserir dados numa base de dados faço assim:

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim oracledb As OracleClient.OracleConnection
    Dim myCommand As New OracleClient.OracleCommand
    Dim myReader As OracleClient.OracleDataReader
    Dim sql As String
    oracledb = New OracleClient.OracleConnection
    oracledb.ConnectionString = "User ID=BM41524;DataSource=BDADOS;password=41524"
    oracledb.Open()
    sql = "insert into tablename values ('" & TextBox1.Text & "','" & TextBox2.Text & "', '" & TextBox3.Text & "')"
    myCommand = New OracleClient.OracleCommand(sql, oracledb)
    myCommand.ExecuteNonQuery()
    oracledb.Close()
    End Sub


    A minha dúvida é a seguinte:
    - como não se pode repetir a chaves principal eu queria saber o seu ultimo valor de modo a por o valor seguinte na inserção ... para isso pensei em fazer consulta com um count à bd com uma listbox e um botão mas não sei como fazer a consulta ... espero ter me conseguido fazer entender ... se alguém me puder ajudar eu ficaria muito grata.

    desde já agradeço a atençao

    ***
     
  2. SoundSurfer

    SoundSurfer Power Member

    Podes pôr na BD a chave como autonumber (não deve ser este o nome, mas dá para ter uma ideia), e assim não a precisas de inserir, é feito automaticamente.
     
  3. eu estou a trabalhar com oracle sql e ao definir o tipo de atributo uso number, varchar e date ... embora seja uma boa ideia para resolver o meu problema não sei como definir numero automático na chaves principal.

    se me souberem dizer como se define numero automatico em oracle sql seria de grande ajuda ;)

    ***
     
  4. ednoc

    ednoc Power Member

    dá uma vista de olhos aqui
     
  5. KiKas

    KiKas Power Member

    o oracle não tem autonumber. Tens varias maneiras de fazer isso.

    se isso for uma bd single user sem problemas de concorrencia podes fazer assim

    insert into nome_da_tabela(valor_a_acrescentar,campo2,campo3) values ((select max(valor_a_acrescentar) from nome_da_tabela),valor2,valor3);

    se tiveres varios acessos simultaneos e concurrencias essa maneira não funciona porque pode gerar numeros iguais pelo que deves fazer do seguinte modo.

    1. crias uma sequencia na BD sempre que fores inserir na tabela vais buscar o proximo numero da sequencia.

    insert into nome_Da_tabela(valor_a_acrescentar,campo2,campo3) values (nome_da_sequencia.nextval,valor2,valor3);


    2. melhor ainda e para não teres que te importar com inserção desse campo:

    cria um trigger para essa tabela no before insert

    e nesse trigger incremente a sequencia e força o numero da sequencia para esse campo da tabela

    de modo que quando fizeres o insert so precisas de fazer isto:

    insert into nome_da_table(campo2,campo3) values (valor2,valor3);

    o teu valor_a_acrescentar e incrementado automaticamente no trigger e nem precisas de o por na clausula de insert.


    Não sei qual é o teu nivel de oracle, mas se precisares mais detalhe sobre algum destes metodos apita ;)
     
  6. axo que o que o kikas sugeriu é capaz de funcionar ...

    vou tentar entao fazer o trigger

    obrigado por me ajudarem

    ***
     
    Última edição: 9 de Junho de 2006
  7. pois ... descobri que o meu nivel de oracle é mesmo muito baixinho ...

    será possivel fazeres o codigo para criar por exemplo uma tabela com um código de registo e um nome onde ao inserires os nomes na tabela gere automaticamente o numero de registo?

    :confused: obrigado ***
     

Partilhar esta Página