Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [VB.NET 2010] Problema ADO.NET e Query Parametrica

    Buondi
    sto impazzendo e non capisco perchè non va ... cioè ho una textbox e una combobox da cui ricavo una parola ed un id di un numero che andrà associato alla parola scritta tramite aggiungi_button

    prima però si deve controllare se esiste gia quella parola ... con controlla_button .. il problema è che la query di controllo_esistenza.commandtext="query..." mi da sempre risultato 0 ... PERCHE'?????


    codice:
    Imports System.Data
    Imports System.Data.OleDb
    Public Class Parole_Chiavi
    
        'Creo una connessione con il database 
        Dim Connessione As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\smspanel.mdb;Persist Security Info=True")
        'Creo una nuova istanza di DataAdapter
        Dim DataAdapter As New OleDbDataAdapter
        'Creo una nuova istanza di DataSet
        Dim DataSet As New DataSet
        'Creo un nuovo DataView
        Dim DataView As New DataView
        'Creo un nuova istanza currency manager per controllarlo esplicitamente
        Dim CrManager As CurrencyManager
    
        Private Sub Parole_Chiavi_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Codice non rilevante....
        End Sub
    
        Private Sub Aggiungi_button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Aggiungi_button.Click
           Codice non rilevante...
        End Sub
    
        Private Sub Controlla_button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Controlla_button.Click
            'Mi prendo l'id della combobox 
            Dim id_numero As Integer = Numero_combobox.SelectedValue
            'Mi prendo il numero di telefono
            Dim Parola_Chiave As String = ParolaChiave_textbox.Text
            If Parola_Chiave = "" Then
                Errore_label.Text = "Hai lasciato il campo ''Parola Chiave'' Vuoto, correggere prima di procedere"
            Else
                'Procedo ad aggiungere il nuovo record
                Dim Controllo_eistenza As OleDbCommand = New OleDbCommand
                Controllo_eistenza.Connection = Connessione
                Controllo_eistenza.CommandText = "SELECT * FROM chiavi WHERE chiave LIKE '" & Parola_Chiave & "' "
                'Apriamo la connessione
                Connessione.Open()
                'Eseguiamo e vediamo se funziona
                Try
                    Controllo_eistenza.ExecuteNonQuery()
                Catch Eccezione As OleDb.OleDbException
                    MessageBox.Show(Eccezione.Message)
                End Try
                Connessione.Close()
            End If
        End Sub
    End Class
    Programmatore - Consulenza informatica -
    Web Design - Professionista I.T.
    ---------------------------------------
    http://www.malorgio.it

  2. #2
    mi da sempre risultato 0 .. anche se modifico la query introducendo un parametro esterno @
    Programmatore - Consulenza informatica -
    Web Design - Professionista I.T.
    ---------------------------------------
    http://www.malorgio.it

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    Ti da sempre zero che cosa ?

    Sicuramente con quella query la riga di codice:

    codice:
    Controllo_eistenza.ExecuteNonQuery()
    non è corretta.
    Mi aspetterei un .Fill con un DataSet e un SqlDataAdapter.
    Sbagliare è umano, perseverare è diabolico.

  4. #4
    Originariamente inviato da ClaudioMalorgio
    mi da sempre risultato 0 .. anche se modifico la query introducendo un parametro esterno @
    ma non devo riempire dataset , il controlla_button dovrebbe crearmi una messagebox.show() e dirmi se esiste o no quella parola nel database


    se nel db (access) ho "testo"

    e sul programma scrivo nella textbox "testo" cliccando su controlla dovrebbe dirmi "Parola gia presente"

    solo che la query non va e mi dice sempre "parola non presente"
    Programmatore - Consulenza informatica -
    Web Design - Professionista I.T.
    ---------------------------------------
    http://www.malorgio.it

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    Originariamente inviato da ClaudioMalorgio
    ma non devo riempire dataset , il controlla_button dovrebbe crearmi una messagebox.show() e dirmi se esiste o no quella parola nel database


    se nel db (access) ho "testo"

    e sul programma scrivo nella textbox "testo" cliccando su controlla dovrebbe dirmi "Parola gia presente"

    solo che la query non va e mi dice sempre "parola non presente"
    Perché come ti già ho detto la query non va bene e/o come non va bene come leggi il risultato della query.

    Ad esempio un metodo per leggere quanti Record sono presenti nella Tabella chiavi
    in cui il campo chiave = al testo presente nella TextBox potrebbe essere:
    codice:
         command.Parameters.AddWithValue("@valore", txtSum.Text)   
         command.CommandText = "SELECT COUNT(chiave) FROM chiavi WHERE chiave = @valore"
            connection.Open()
             Dim rowCount As Integer= Cint(command.ExecuteScalar)
    Sbagliare è umano, perseverare è diabolico.

  6. #6
    Originariamente inviato da Pirelli72
    Perché come ti già ho detto la query non va bene e/o come non va bene come leggi il risultato della query.

    Ad esempio un metodo per leggere quanti Record sono presenti nella Tabella chiavi
    in cui il campo chiave = al testo presente nella TextBox potrebbe essere:
    codice:
         command.Parameters.AddWithValue("@valore", txtSum.Text)   
         command.CommandText = "SELECT COUNT(chiave) FROM chiavi WHERE chiave = @valore"
            connection.Open()
             Dim rowCount As Integer= Cint(command.ExecuteScalar)
    scusa se ti faccio impazzire sono due settimane che sono dietro a visual basic e sto imparando piano piano , provengo da php ed è un mondo diverso !
    percio io faccio la query e poi uso la variabile contarighe però non uso il metodo Execute non query ma executescalar, posso chiedere (brevemente) come funziona quest'ultimo?
    Programmatore - Consulenza informatica -
    Web Design - Professionista I.T.
    ---------------------------------------
    http://www.malorgio.it

  7. #7
    Grazie funziona perfettamente , però l'unica modifica che ti faccio è che la mia query nella clausola WHERE dev essere cosi

    WHERE chiave LIKE %@chiave%

    dove ovviamente chiave è un parametro aggiunto con valore , valore della textbox

    grazie per la consulenza
    Programmatore - Consulenza informatica -
    Web Design - Professionista I.T.
    ---------------------------------------
    http://www.malorgio.it

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    Originariamente inviato da ClaudioMalorgio
    .... però non uso il metodo Execute non query ma executescalar, posso chiedere (brevemente) come funziona quest'ultimo?
    Te lo spiego in parole povere.
    La funzione .ExecuteNonQuery() esegue la query e ti restituisce il numero delle righe in cui è avvenuto il cambiamento a seguito ad esempio di un UPDATE o di un INSERT.

    La funzione .Executescalar() esegue la query e restituisce la prima colonna e la prima riga del risultato della query stessa.

    Sbagliare è umano, perseverare è diabolico.

  9. #9
    Originariamente inviato da Pirelli72
    Te lo spiego in parole povere.
    La funzione .ExecuteNonQuery() esegue la query e ti restituisce il numero delle righe in cui è avvenuto il cambiamento a seguito ad esempio di un .UPDATE o di un INSERT.

    La funzione .Executescalar() esegue la query e restituisce la prima colonna e la prima riga del risultato della query stessa.

    tutto sommato ci potevo arrivare mi documento meglio su msdn , grazie ancora !
    Programmatore - Consulenza informatica -
    Web Design - Professionista I.T.
    ---------------------------------------
    http://www.malorgio.it

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    Originariamente inviato da ClaudioMalorgio
    tutto sommato ci potevo arrivare mi documento meglio su msdn , grazie ancora !
    In effetti...........
    Sbagliare è umano, perseverare è diabolico.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.