194 messaggi dal 05 giugno 2004
Salve a tutti.

Sono alle prese con l'inserimento di un nuovo record in una tabella di SQL Server 2000, la tabella è strutturata in 3 campi: ID (chiave primaria, guid e rowguid), Colonna1 e Colonna2 di tipo 'nvarchar'.

La sintassi che uso per l'inserimento è la seguente:

Dim dr As DataRow = DataSet11.Tabella1.NewRow
dr("Colonna1") = TextBox1.Text
dr("Colonna2") = TextBox2.Text
DataSet11.Tabella1.Rows.Add(dr)
SqlDataAdapter1.Update(DataSet11)

L'errore restituito da IIS è il seguente: "La colonna ID non accetta valori null".

Qualcuno sa dirmi come posso fare in modo che la chiave primaria venga generata automaticamente?

Accetto qualsiasi consiglio. Ringraziamenti anticipati a tutti.
1 messaggio dal 21 giugno 2004
Scusa, ma il campo ID è un contatore?

Ciao
Chavez
194 messaggi dal 05 giugno 2004
E' una chiave primaria autoincrementante di tipo GUID (Glubal Unique Identifire), cioè un identificatore univoco a livello mondiale che comprende alcuni parametri univoci come il nome del server e la data.

Per farti un esempio è una cosa così: 3E6E6384-E489-4A84 eccetera (a 16 bit).

Se ricevessi un consiglio su come comportarmi con un contatore mi sarebbe comunque molto utile.

Grazie.
397 messaggi dal 10 ottobre 2002
Ciao, solitamente i campi ID su database oltre ad essere univoci hanno anche la una proprietà 'autoincrement', controlla che il tuo campo abbia questa proprietà

Ciao
Allora, se utilizzi una chiave primaria di tipo GUID (come mai, poi? non è più semplice da gestire un normale contatore? sei in uno scenario di replica?) hai due strade: la prima è aggiungere la riga
dr(ID) = Guid.NewGuid

all'atto della creazione della tua DataRow, in alternativa puoi lasciar tutto così com'è e farlo generare direttamente da SQLServer mettendo rowid() come valore predefinito per quella colonna (devi però ricordarti di modificare le proprietà della chiave primaria del dataset (tasto dx sulla tabella, modifica proprietà chiave, togli la spunta su "Ammetti null"). Il DataAdapter penserà poi a sostituire il valore null con quello effettivamente generato da SQLServer.

Nel caso in cui utilizzi invece un contatore, non devi far altro che settare le proprietà AutoIncrement a True, AutoIncrementStep e AutoIncrementSeed in modo opportuno. In alternativa, se non crei più di una DataRow prima di effettuare l'update sul DB, puoi lasciar perdere tutto ciò ed inserire un valore qualsiasi, tanto poi all'atto della memorizzazione il DataAdapter, anche in questo caso, sostituirà il valore effettivamente generato sul server.
194 messaggi dal 05 giugno 2004
Ringrazio tutti quelli che mi hanno risposto, in particolar modo Cradle che di secondo nome probabilmente fa "database".

Il tuo consiglio Cradle mi è stato molto utile e mi ha chiarito le idee sul funzionamento di alcuni processi.

Grazie ancora e arrivederci a tutti.
194 messaggi dal 05 giugno 2004
Ringrazio tutti quelli che mi hanno risposto, in particolar modo Cradle che di secondo nome probabilmente fa "database".

Il tuo consiglio Cradle mi è stato molto utile e mi ha chiarito le idee sul funzionamento di alcuni processi.

Grazie ancora e arrivederci a tutti.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.