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

    [VB.NET] Eccezione in inserimento db

    Ciao,
    ho un problema con un inserimento nel db (utilizzo SQL Server 2000).
    Questo è lo schema della mia tabella Proprietari:


    id integer(4) primary key
    nome varchar(50) not null
    cognome varchar(50) not null
    cognome codFiscale(50) not null
    annoPatente integer(4) not null


    Il campo ID e' la mia chiave primaria e gli ho impostato :

    Identita' : Si
    Inizio identita' : 1
    Incremento identita' : 1


    Quando faccio l'inserimento utilizzo la seguente query :


    Dim query As String
    query = "insert into proprietari values('"
    query += nome + "', '" + cognome + "', '"
    query += codFiscale + "', " + annoPatente


    Ma al momento dell'inserimento viene sollevata un'eccezione :
    System.InvalidCastException: Cast non valido dalla stringa "insert into proprietari values('" al tipo 'Double'. ---> System.FormatException: Formato della stringa di input non corretto.

    ..ho capito che è dovuto al fatto che non prevedo nella query il campo id ... ma ... avendo messo 'identità = si' al campo ID, non dovrebbe gestirselo da solo il problema del contatore?

    Come posso risolvere il problema?

  2. #2

    Re: [VB.NET] Eccezione in inserimento db

    Originariamente inviato da ematramu
    ..ho capito che è dovuto al fatto che non prevedo nella query il campo id ... ma ... avendo messo 'identità = si' al campo ID, non dovrebbe gestirselo da solo il problema del contatore?
    Il problema mi sembra sia nel modo con cui costruisci la query. Dopo averla costruita prova a visualizzare il risultato e inseriscilo ad esempio nel query analyzer (se usi sqlserver 2000 dovresti averlo) oppure postalo qui. Probabilmente non e' una query sql valida. Fossi in te metterei nella query di inserimento anche il nome dei campi oltre che i valori e imparerei ad usare i parametri
    es.
    codice:
    INSERT INTO tabella (campo1, campo2) VALUES (@val1, @val2)
    Saluti a tutti
    Riccardo

  3. #3
    ..well.. effettivamente sbagliavo la costruzione della query.. capirete vengo da java.. ho problemi anche con le cose elementari!
    Usavo la concatenazione delle stringhe come in java (es. String stringa = "non so" + "boh" ).
    Ho sostituito i + con & e adesso va .. o almeno supera questo problema .. ora si è presentato il problema che mi aspettavo prima: quello relativo all'id.

    L'eccezione che viene sollevata è la seguente :
    databaseSystem.Data.SqlClient.SqlException: È possibile specificare un valore esplicito per la colonna Identity della tabella 'proprietari' solo quando si utilizza un elenco di colonne e IDENTITY_INSERT è impostata su ON. at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at Aci.Ematramu.Proprietario.insertDb() in c:\inetpub\wwwroot\Aci\Proprietario.vb:line 54 at Aci.schermoInserisciProprietario.Page_Load(Object sender, EventArgs e) in c:\inetpub\wwwroot\Aci\schermoInserisciProprietari o.aspx.vb:line 67

  4. #4
    Originariamente inviato da ematramu
    .. ora si è presentato il problema che mi aspettavo prima: quello relativo all'id.
    forse non mi sono espresso con chiarezza... devi specificare i nomi di campo nella query di inserimento prima di specificare i valori altrimenti devi specificare i valori nello stesso ordine dei campi. Se lo hai fatto, dovresti postare anche il codice oltre che all'errore altrimenti dovremmo fare il gioco dell'indovino...
    Saluti a tutti
    Riccardo

  5. #5
    ecco il codice della classe vb che ho fatto :

    Imports System
    Imports System.Data.SqlClient

    Namespace mioNamespace
    Public Class Proprietario
    Private nome As String
    Private cognome As String
    Private codFiscale As String
    Private annoPatente As Integer

    Sub setNome(ByVal n As String)
    nome = n
    End Sub
    Sub setCognome(ByVal c As String)
    cognome = c
    End Sub
    Sub setCodFiscale(ByVal c As String)
    codFiscale = c
    End Sub
    Sub setAnnoPatente(ByVal a As Integer)
    annoPatente = a
    End Sub
    Function getNome() As String
    Return nome
    End Function
    Function getCognome() As String
    Return cognome
    End Function
    Function getCodFiscale() As String
    Return codFiscale
    End Function
    Function getAnnoPatente() As Integer
    Return annoPatente
    End Function

    Sub insertDb()
    Dim conPubs As SqlConnection
    Dim cmdInsert As SqlCommand

    Dim stringaConnessione As String
    stringaConnessione = "Server=localhost; uid=ema; pwd=ema; database=aci"
    conPubs = New SqlConnection(stringaConnessione)

    Dim query As String
    query = "insert into proprietari values(1,'" & nome & "', '" & cognome & "', '" & codFiscale & "', " & annoPatente & ")"

    cmdInsert = New SqlCommand(query, conPubs)

    conPubs.Open()

    cmdInsert.ExecuteNonQuery()

    conPubs.Close()
    End Sub
    End Class
    End Namespace

  6. #6
    Originariamente inviato da ematramu
    ecco il codice della classe vb che ho fatto :
    invece di rispondere cosi velocemente dovresti leggere meglio le risposte che ti vengono date.
    Ti ripeto per la terza volta che DEVI indicare i nomi di campo prima dei valori. L'errore sta qui
    insert into proprietari values(1,'" & nome & "', '" & cognome & "', '" & codFiscale & "', " & annoPatente & ")"
    Saluti a tutti
    Riccardo

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    4,127
    a parte l'uso delle virgolette, nn puoi inserire un valore in un campo "primary key" x questo al posto di
    insert into proprietari values(1,'" & nome & "',..)
    devi usare
    insert into proprietari(colonna1,..) values('" & nome & "',..)

  8. #8
    Originariamente inviato da sms
    nn puoi inserire un valore in un campo "primary key"
    ... non puoi inserire in un campo identity vorrai dire
    Saluti a tutti
    Riccardo

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    4,127
    Originariamente inviato da riccardone
    ... non puoi inserire in un campo identity vorrai dire
    si certo scusa x l'errore

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