Avatar billede turbodk Nybegynder
15. april 2010 - 10:18 Der er 7 kommentarer og
1 løsning

Kan ikke skrive til database

Hej,
jeg er i fuld gang med et eksamensprojekt i faget programmering og jeg er i gang med et program der skal udleje videoer.

Når man så afslutter sin kurv skal den jo så oprette en udlejning med telefonnummer på kunden(til identifikation), videoens titel, og en dato.

Til det har jeg set følgende kode ind i en if:

<---KODE START--->

DataRow dRow = ds1.Tables["Udlejninger"].NewRow();

dRow[1] = 00000000;
dRow[2] = lbKasseKurv.SelectedItem.ToString();
dRow[3] = theDate.Day+"-"+theDate.Month+"-"+theDate.Year;

ds1.Tables["Udlejninger"].Rows.Add(dRow);
da.Update(ds1, "Udlejninger");

<---KODE SLUTTER--->

I FormLoad eventen har jeg bl.a. følgende:

<---KODE STARTER--->

string sql_udlejninger = "SELECT * From udlejninger";
da = new System.Data.SqlClient.SqlDataAdapter(sql_udlejninger, con);
da.Fill(ds1, "Udlejninger");

<---KODE SLUTTER--->

Jeg læser fint fra alle tabellerne i min database, men jeg har nogle problemer med at skrive til den.

Jeg er sprit ny i databaser, og har indtil videre fulgt denne: http://www.homeandlearn.co.uk/csharp/csharp_s12p10.html

Men den hjælper mig desværre bare ikke mere, så er der en venlig sjæl der vil/kan hjælpe? :)
Avatar billede turbodk Nybegynder
15. april 2010 - 10:21 #1
Hov, jeg glemte helt, den linje den laver fejlen i er:

da.Update(ds1, "Udlejninger");

Og den laver følgende fejl:

"Update kræver, at der er en gyldig InsertCommand, når der sendes en DataRow-samling med nye rækker."

Jeg bruger Visual C# 2008 Express Edition, og den Microsoft SQL Server der fulgte med i installationen dertil :P
Avatar billede scarface335 Nybegynder
15. april 2010 - 10:25 #2
Det ser ud til at du mangler at definere en insertcommad til din datasource.
noget i denne retning. Du skal selvfølgelig udskifte x'erne med de rigtige navne.
x.Insertcommand = "Insert into x values(x,x,x,x,x)
Avatar billede turbodk Nybegynder
15. april 2010 - 10:52 #3
Jeg har fiflet lidt med det nu, og googlet lidt, og det kan jeg simpelthen ikke få til at virke...

Lidt mere specifik hjælp vil blive værdsat, da jeg som sagt er ret ny indenfor databaser.
Avatar billede arne_v Ekspert
16. april 2010 - 03:24 #4
Prøv:

SqlCommandBuilder cb = new SqlCommandBuilder(da);
da.InsertCommand = cb.GetInsertCommand();
Avatar billede turbodk Nybegynder
16. april 2010 - 09:32 #5
Well det virker umiddelbart.

Kan du fortælle hvad den der gør? Bare kort og meget overordnet så jeg har noget til kommentarfeltet? :P

Og vil denne virke hvis jeg oppe i FormLoad eventet lukker forbindelsen til databasen?

Anyways, det er bonusspørgsmål, smid et svar så får du dine point :)
Avatar billede arne_v Ekspert
16. april 2010 - 15:03 #6
SqlCommandBuilder cb = new SqlCommandBuilder(da);

bygger insert/update/delete SQL saetninger for adapteren.

da.InsertCommand = cb.GetInsertCommand();

smider den genererede insert saetning over i adapteren.

Jeg gaetter paa at du kan lukke og genaabne connection og at de stadig vil virke.

Men jer synes ikke at det er paent design.
Avatar billede arne_v Ekspert
16. april 2010 - 15:03 #7
og svar
Avatar billede turbodk Nybegynder
16. april 2010 - 17:30 #8
Nej har du nok ret i.

Endnu en gang mange mange tak :)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester