Neptous Δημοσ. 3 Απριλίου 2011 Share Δημοσ. 3 Απριλίου 2011 Έχω το εξής πρόβλημα , ο παρακάτω κώδικας κάνει μια εισαγωγή σε μια βάση με sql server 2008 , κάθε φορά που εκτελώ το κομμάτι του κώδικα μου εμφανίζει το έξεις λάθος : <<To update απαιτεί ένα έγκυρο InsertCommand κατά τη διαβίβαση μιας συλλογής DataRow με νέες γραμμές.>> Με ενδιαφέρει η εισαγωγή και αργότερα η διαγραφή και η ενημέρωση να γίνουν οπωσδήποτε με την χρήση DataAdapter , DataSet δεν θέλω να χρησιμοποιήσω καμία άλλη μέθοδο αν μπορούμε να βρούμε το λάθος σε αυτό των κώδικα : try { SqlConnection workscon; SqlDataAdapter workadapter; DataRow dr; workscon = new SqlConnection(); workscon.ConnectionString = set.Default.WORKSCONDB.ToString(); workscon.Open(); workadapter = new SqlDataAdapter("SELECT * FROM dbo.WORKS", workscon); DataSet workdataset = new DataSet("dbo.WORKS"); workadapter.Fill(workdataset, "dbo.WORKS"); dr = workdataset.Tables["dbo.WORKS"].NewRow(); dr["ID"] = "12" ; workdataset.Tables["dbo.WORKS"].Rows.Add(dr); workadapter.Update(workdataset.Tables["dbo.WORKS"]); workscon.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message); } Να σημειώσω ότι το table του πίνακα έχει 8 πεδία κανένα δεν είναι unique και κανένα δεν θέλει υποχρεωτική τιμή ….. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
_tasos Δημοσ. 3 Απριλίου 2011 Share Δημοσ. 3 Απριλίου 2011 Το workadapter έχει ένα property που λέγεται InsertCommand. Φαντάζομαι πως θα πρέπει να του δώσεις τιμή το insert statement, δηλαδή workadapter.InsertStaement = "INSERT INTO dbo.Works (....) VALUES (....)"; Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Neptous Δημοσ. 3 Απριλίου 2011 Μέλος Share Δημοσ. 3 Απριλίου 2011 Την εφαρμογή που δημιουργώ την κάνω σε NET 2 δεν ξέρω αν αυτό παίζει το ρόλο του , αλλά δεν βλέπω το properties που μου αναφέρεις για τον adapter. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
kagelos Δημοσ. 4 Απριλίου 2011 Share Δημοσ. 4 Απριλίου 2011 Κοίτα λίγο και τον SqlCommandBuilder. Βέβαια όπως αναφέρθηκε, λείπει το insert command. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Neptous Δημοσ. 4 Απριλίου 2011 Μέλος Share Δημοσ. 4 Απριλίου 2011 Τελικός αυτή είναι η δομή της εντολής για την εισαγωγή … workscon = new SqlConnection(); workscon.ConnectionString =set.Default.WORKSCONDB.ToString(); workscon.Open(); SqlDataAdapter workadapter = new SqlDataAdapter("SELECT * FROM works", workscon); SqlCommandBuilder builder = new SqlCommandBuilder(workadapter); DataSet ds = new DataSet("WORKSET"); workadapter.Fill(ds, "WORKS"); DataRow row = ds.Tables["WORKS"].NewRow(); row["TECHINICALNAME"] = cmbtechnical.Text ; ds.Tables["WORKS"].Rows.Add (row); workadapter.Update(ds, "WORKS"); workscon.Close(); Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.