Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [VB.NET] Query parametrica su database MySQL

    buonasera, ho questo piccolo problema.
    ho testato questa query su un interfaccia per mysql e funziona benissimo.
    codice:
    SET @n = 0;
    UPDATE squadre_anagrafica SET ORSQ2 = @n := @n + 1 WHERE IDCN = '000084D6' AND IDG = '013' AND CIN_M1 < 900 ORDER BY SOM1 DESC, TEM DESC, ORSQ;
    non trovo però la giusta sintassi per inviarla da codice vb.net. la logica mi direbbe di inviare due comandi separati (ho tentato anche con un unica istruzione ma non c'è verso)

    codice:
    q1 = "SET @n = 0; "
    
    
    q2 = "UPDATE squadre_anagrafica SET ORSQ2 = (@n := @n + 1) WHERE IDCN = '" & idcn & "' AND IDG = '" & idg & "' AND CIN_M1 < 900 ORDER BY SOM1 DESC, TEM DESC, ORSQ;"
    ...
    
    cm1 = New MySqlCommand(q1, cn1)
    cm1.ExecuteNonQuery()
    
    
    cm1 = New MySqlCommand(q2, cn1)
    cm1.ExecuteNonQuery()
    qualcuno riesce a farmi capire dove sbaglio? grazie anticipate

  2. #2

  3. #3
    si avevo già tentato senza successo. credo che il problema sia dovuto a vb.net che vede la variabile @n come parametro proprio piuttosto che di mysql.

  4. #4
    Posta come hai fatto con una sola

  5. #5
    codice:
    q1 = "SET @n := 0; "
    q1 &= "UPDATE squadre_anagrafica SET ORSQ2 = @n := @n + 1 WHERE IDCN = '000084D6' AND IDG = '013' AND CIN_M1 < 900  ORDER BY SOM1 DESC, TEM DESC, ORSQ;"
    
    
    Dim cn1 As New MySqlConnection(cnDbGrafica)
    cn1.Open()
    
    Dim cm1 As New MySqlCommand(q1, cn1)
    cm1.Parameters.Add("@n", MySqlDbType.Int32).Value = 0
    cm1.ExecuteNonQuery()
    
    cn1.close()
    l'aggiunta del parametro è indispensabile altrimenti la procedura da errore e si blocca

  6. #6
    se non aggiungi il parametro che errore ricevi?

  7. #7
    in ogni caso non vuole la doppia query. togliendo quindi la prima, senza mettere il parametro si blocca per la mancanza del parametro. con il parametro assegna a tutti i record il valore 1 (0 + 1) senza incrementare il valore come succede direttamente su mysql. alla fine ho risolto con un ciclo for da codice ma la soluzione diretta su mysql mi piace molto di più. è sicuramente tutto più pulito.

  8. #8
    intendevo l'omissione della riga

    cm1.Parameters.Add("@n",MySqlDbType.Int32).Value=0

  9. #9
    Quote Originariamente inviata da optime Visualizza il messaggio
    intendevo l'omissione della riga

    cm1.Parameters.Add("@n",MySqlDbType.Int32).Value=0
    si l'ho scritto, si blocca il debug e segnala la mancanza

  10. #10
    quindi il codice sarebbe

    codice:
    q1 = "SET @n := 0; "
    q1 &= "UPDATE squadre_anagrafica SET ORSQ2 = @n := @n + 1 WHERE IDCN = '000084D6' AND IDG = '013' AND CIN_M1 < 900  ORDER BY SOM1 DESC, TEM DESC, ORSQ;"
    
    
    
    
    Dim cn1 As New MySqlConnection(cnDbGrafica)
    cn1.Open()
    
    
    Dim cm1 As New MySqlCommand(q1, cn1)
    cm1.ExecuteNonQuery()
    
    
    cn1.close()
    corretto?

    puoi postare l'errore esatto?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.