Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    9

    [C# - SQL] Update/Delete Command

    Premetto che sono alle prime esperienze sia con c# che con sql.
    Dunque... sto usando c# express: ho creato un form con una datagridview collegata al mio database. Automaticamente mi ha creato la barra degli strumenti per la navigazione nella tabella.
    L'aggiunta di record funziona bene, il problema è quando vado a modificare o elimare record che mi danno questo errore: System.InvalidOperationException non è stata gestita. "Update (o Delete) richiede un UpdateCommand (o DeleteCommand) valido se l'insieme DataRow viene passato con righe modificate."
    Da quello che ho capito è un problema del table adapter, per adesso ne ho uno che si chima Fill, GetData() con codice SQL:
    codice:
    SELECT     [user], password, admin, col1, col2
    FROM         utenti
    come posso fare?

  2. #2
    Stai usando i dataset tipicizzati?
    se si dovresti trovarti un file con estensione XSD in app code e nelle proprietà del TableAdapter trovi una proprietà UpdateCommand che è vuota e li ci scrivi :

    codice:
    UPDATE NOMETABELLA SET campo1='modifica',campo2='Modifica', ecc. WHERE campo='quellochevuoi'
    da notare che WHERE lo metti se eventualmente vuoi raffinare la ricerca dei campi da aggiornare altrimenti non metti nulla e dovrebbe aggiornarti il record corrente.

    Se invece non stai usando DATASET postami il codice che usi per connetterti al DB e ti aiuto.

    if $oggi = "Lunedi" {
    $coglioni = $coglioni * 500;
    }

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    9
    Sto usando datased.
    Allora un passettino l'abbiamo fatto e ti ringrazio, però adesso quando vado a salvare mi mi da un altro errore: System.Data.SqlServerCe.SqlCeException non è stata gestita. "Errore durante l'analisi della query. [ Token line number = 1,Token line offset = 19,Token in error = user ]" (user è la prima colonna"

    e già che ci sei chiariscimi una cosa... io ho preso il tuo codice e ho messo al posto di campo1, campo2 ecc i nomi delle colonne, e poi dovevo mettere = e un valore giusto? Però questo valore deve essere quello che ho inserito nella tabella come faccio a scriverlo?

    grazie!

  4. #4
    Ciao mi posti per cortesia ESATTAMENTE quello che hai messo nella proprieta UpdateCommand?
    if $oggi = "Lunedi" {
    $coglioni = $coglioni * 500;
    }

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    9
    al posto dei punti di domanda ho provato con valori diversi ma il problema persisteva
    UPDATE utenti SET user='???', password='???', affidi='???'

  6. #6
    Si Ok, allora devi fare cosi nell'updateCommand scrivi:

    codice:
    UPDATE TABELLA SET  CAMPO1 = :CAMPO1, CAMPO2=:CAMPO2, ecc WHERE     (CAMPOCHIAVE = :Original_CAMPOCHIAVE)
    Mi raccomando di elencare i campi ad uno alla volta e metti = : (duepunti) NOMECAMPO

    fammi sapere.
    if $oggi = "Lunedi" {
    $coglioni = $coglioni * 500;
    }

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    9
    ti sto stressando la vita

    mi dice che la clausola SET è incompleta, dove sbaglio?
    codice:
    UPDATE    utenti
    SET              USER = : USER, PASSWORD = : PASSWORD, ADMIN = : ADMIN
    WHERE     (USER = : Original_ USER)

  8. #8
    ti sto stressando la vita
    :quote: :quote: Ma no!!!!

    comunque non devi lascare spazi fra i due punti e il campo (CAMPO = :CAMPO)

    vedi come va......
    if $oggi = "Lunedi" {
    $coglioni = $coglioni * 500;
    }

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    9
    dunque... la query scritta così non da più errore, però da un altro errore durante l'esecuzione
    codice:
    UPDATE    utenti
    SET              [user] = ':user', password = ':password', admin = ':admin'
    WHERE     ([user] = ':Original_user')
    errore: System.Data.DBConcurrencyException non è stata gestita. "Violazione di concorrenza: UpdateCommand ha modificato 0 dei 1 record previsti."

  10. #10
    Violazione di concorrenza: UpdateCommand ha modificato 0 dei 1 record previsti."
    Questo ti esce fuori quando il record che tenti di updatare gia è in uso, forse hai qualche processo bloccato sotto?

    codice:
    UPDATE    utenti
    SET              [user] = ':user', password = ':password', admin = ':admin'
    WHERE     ([user] = ':Original_user')
    VVoVe: VVoVe: Perche hai messo i parametri tra Apici?!? cosi li interpreta come testo da sostituire! Senti fa una cosa nel campo UpdateCommand clicca su i puntini sospensivi, ti si dovrebbe aprire il QUeryBuilder e imposta il comando da li come nell'immagine che ti ho allegato.
    Immagini allegate Immagini allegate
    if $oggi = "Lunedi" {
    $coglioni = $coglioni * 500;
    }

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.