09. december 2005 - 11:39Der er
12 kommentarer og 1 løsning
Opdater SQL database med DataSet eller DataTable.
Hej.
Jeg leder efter den lette måde at opdatere min database på. Læste noget om, at det skulle kunne gøres med et DataSet eller en DataTable. Det virker fint med at læse fra databasen, men jeg kan ikke få det til at virke med at skrive til databasen.
I får lige min kode, og så kommer der lidt forklaringer:
public void writeDT(DataTable dtw) { SqlCommand sqlkommando = new SqlCommand(); SqlDataAdapter logAdapter = new SqlDataAdapter(); DataSet logDS = new DataSet(); //logDS.Tables = dtw; SqlConnection logDB = new SqlConnection(dbString); sqlkommando.CommandText = "Insert * Into Fields"; sqlkommando.Connection = logDB; logAdapter.InsertCommand = sqlkommando; logDB.Open(); logAdapter.Fill(logDS, "Fields"); logDB.Close(); }
Ok, dette stykke kode er metoden "writeDT(DataTable dtw)" fra min klasse "LogDatabase". Metoden kaldes med en DataTable, indeholdende de data, som skal indsættes i databasen, som parameter.
Min DataTable (dtw) indeholder en flad tabel (x antal rækker af 22 kolonner).
dbString er min database connection string, som er defineret et andet sted i koden.
Den udkommenterede linje, er der jeg prøver at kopiere indholdet fra min DataTable over i et DataSet. Det virker slet ikke (linjen er ufærdig, og resultatet af mange andre forsøg).
Jeg er ikke sikker på hvorvidt min sql kommando er rigtig og / eller om jeg skal bruge InsertCommand på SqlAdapteren?
Jeg ved heller ikke om idéen her vil virke, når man bare skal tilføje nye data. Lige nu er tabellen tom, men der vil jævnligt blive tilført flere linjer.
Det er ret mange løse ender og spørgsmål, men jeg håber I kan hjælpe mig med at få noget brugbart ud af det.
Hmmmm. Hvis man nu ser bort fra CommandBuilderen; jeg har en DataTable med alle mine fine data i, som jeg skal have hældt over i Sql databasen. Senere får jeg endnu en DataTable med nye data, som skal hældes derover i. Jeg synes ikke rigtigt jeg kan få den til at gøre det. SqlCommandBuilderen er nok ikke det smarteste at bruge, for jeg får ret mange data at flytte rundt med.
Hmm.. Nu er jeg helt forvirret. Jeg ved ikke om vi taler forbi hinanden, men kan du ikke vise mig et eksempel på hvordan jeg smider alle data fra min DataTable over i min sql-database. DataTabellen (og tabellen i databasen for den sags skyld) har 22 kolonner, og tabellen i databasen er oprettet.
Hej igen, og undskyld ventetiden. Måtte lige have det til at virke på den gammeldags metode. Jeg bruger .NET 2.0 og Visual Web Developer 2005 Express. Det jeg gerne vil, er at smide en flad tabel (en DataTable med 22 kolonner og en hulens masse DataRows) over i min sql database. Tabellen i sql databasen er oprettet og kolonnerne i den stemmer overens med kolonnerne i min DataTable. Det jeg gør nu, er at fyre et sql-statement af for hver DataRow i min DataTable. Det virker ganske glimrende, men da mine DataTables har det med at blive større og større, er jeg bange for, at jeg måske på et eller andet tidspunkt vil lægge sql-serveren ned (vil på et tidspunkt nå 16 mio. Rows el. lign.). Derfor var det jeg tænkte, at man måske kunne lade .NET platformen håndtere tilgangen til sql databasen, og lave noget smart i stil med DataBinding, som ikke vil være så belastende for den. Der findes en fill kommando, men jeg kan BARE ikke få den til at virke. Derfor var det, at jeg kom i tvivl om, om det overhovedet kan lade sig gøre..
Dette er altså et herligt forum!! Jeg havde akkurat brug for kode til DataTable (aflæst fra Excel) -> SQL Server 2005 tabel - og her er svaret let og elegant!!!
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.