Visualizzazione dei risultati da 1 a 9 su 9

Discussione: controllo duplicati

  1. #1

    controllo duplicati

    avendo un database access con campo id che non ammette duplicati come faccio a gestire l'eccezione che si solleva inserendo valori uguali nel campo id?

    grazie!

  2. #2
    Utente di HTML.it L'avatar di Legnetto
    Registrato dal
    May 2002
    Messaggi
    1,419
    Non puoi, i campi identity sono nati apposta per impedire quello che vuoi fare tu
    Ciao

  3. #3
    non voglio forzare l'inserimento

    voglio gestire l'eccezione inserendo un messaggio di errore personalizzato!

  4. #4
    Utente di HTML.it L'avatar di Legnetto
    Registrato dal
    May 2002
    Messaggi
    1,419
    Opssss.

    Metti il codice che contiene la procedura di inserimento in un blocco try e visualizzi l'errore che ti ritona il db.
    Nel blocco catch se la stringa di errore è uguale a quella di cui sopra fai quello che credi.
    Ciao

  5. #5
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    se usi SqlServer, prova a gestire :

    System.Data.SqlClient.SqlException

  6. #6
    allora ti posto solo la parte della funzione

    codice:
     
    
    <%@ Page Language="VB" Debug="True"%>
    <%@ Import Namespace="System.Data" %>
    <%@ Import Namespace="System.Data.OleDb" %>
    <script runat="server">
    	
        Sub DoReg(ByVal o As Object, ByVal e As EventArgs)
            
            Dim str As String
            Dim cn As OleDbConnection
            Dim sql As String
            Dim cmd As OleDbCommand
            Dim objDataReader As OleDbDataReader
            Dim strnome As String
            Dim objCommand As OleDbCommand
            Dim strsql As String
            Dim objConn As OleDbConnection
            
                   
            str = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("data/bijou.mdb")
            cn = New OleDbConnection(str)
            cn.Open()
            
            sql = "INSERT INTO Utenti ([id],[password],role,nome,cognome,indirizzo,civico,telefono,cellulare,e_mail) VALUES (?,?,?,?,?,?,?,?,?,?)"
            cmd = New OleDbCommand(sql, cn)
            cmd.Parameters.Add("@id", nickname.Text)
            cmd.Parameters.Add("@password", pass.Text)
            cmd.Parameters.Add("@role", "Utente")
            cmd.Parameters.Add("@nome", nome.Text)
            cmd.Parameters.Add("@cognome", cognome.Text)
            cmd.Parameters.Add("@indirizzo", indirizzo.Text)
            cmd.Parameters.Add("@civico", civico.Text)
            cmd.Parameters.Add("@telefono", telefono.Text)
            cmd.Parameters.Add("@cellulare", cellulare.Text)
            cmd.Parameters.Add("@e_mail", e_mail.Text)
            
            Try
                cmd.ExecuteReader()
                cmd.Connection.Close()
                objConn = New OleDbConnection(str)
                objConn.Open()
                strsql = "SELECT id, password, role  FROM Utenti WHERE id= '" & nickname.Text & "' and password='" & pass.Text & "';"
                objCommand = New OleDbCommand(strsql, objConn)
                objDataReader = objCommand.ExecuteReader(CommandBehavior.CloseConnection)
                If (objDataReader.Read()) = True Then
                    If (nickname.Text = objDataReader("id") And pass.Text = objDataReader("password")) Then
                        strnome = nickname.Text & ":" & objDataReader("role")
                        System.Web.Security.FormsAuthentication.RedirectFromLoginPage(strnome, False)
                    End If
                    Response.Redirect("default.aspx")
                End If
                    
               
            Catch ex As DataException
                
                Err.Visible = True
                
            Finally
                
                cmd.Connection.Close()
                cn.Close()
                
            End Try
            
            
            ' cmd.ExecuteReader(CommandBehavior.CloseConnection)
    
            'cn.Close()
        
            
            Response.Redirect("default.aspx")
            
        End Sub
        
        Sub Cancella(ByVal o As Object, ByVal e As EventArgs)
            nickname.Text = ""
            pass.Text = ""
            pass.Text = ""
            nome.Text = ""
            cognome.Text = ""
            indirizzo.Text = ""
            civico.Text = ""
            telefono.Text = ""
            cellulare.Text = ""
            e_mail.Text = ""
        End Sub
       
        Protected Sub pass2_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs)
    
        End Sub
    </script>

  7. #7
    scusa ma nn ho capito proprio cm devo fare!!!

  8. #8
    ke cscema....ho risolto!


    grazie...

  9. #9
    qui hai scritto
    Originariamente inviato da 9178angel
    Try
    cmd.ExecuteReader()
    mentre invece dovrebbe essere
    codice:
    cmd.ExecuteNonQuery
    Saluti a tutti
    Riccardo

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.