[C#] Data wordt niet gesaved in SQL Server*

Pagina: 1
Acties:

  • FlowDesign
  • Registratie: Januari 2002
  • Laatst online: 09:05
Ik ben een beetje nieuw met C#. Ik gebruik Visual Studio 2005 Express Edition met SQL Server Express Edition.

Ik heb een database gemaakt met wat tabellen, daarna een connectie en daarmee de dataset.

Daarin heb ik een tabel die verder geen relaties heeft met andere tabellen. De eerste kolom is de primaire sleutel, AutoIncement, Is Identity staat op Yes enzo.

Via Database Explorer -> Show Table Data heb ik alvast 2 records aangemaakt in deze tabel.

Vervolgens gebruik ik gewoon de sleur en pleur methoden van Visual Studio vanuit Data Sources naar een Form. Alle dingen die aangemaakt zouden moeten worden worden aangemaakt.
Bij de ..SaveItemClick functie heb ik een stukje code toegevoegd dat als result het aantal geupdate rijen in een MessageBox weergeeft.
Als ik nu het programma run (vanuit Visual Studio) en wat in de velden of in de datagrid wat records toevoeg enzo en dan save dan krijg ik een MessageBox met daarin het aantal rijen dat geupdate is, dit getal klopt.
Maar als ik nu het programma afsluit en ik ga dan weer naar de Database Explorer en doe Show Table... dan zie ik dat de data in de database helemaal niet opgeslagen is zoals deze in de dataset stond. :/

Ik heb de video's Lesson8 en Lesson9 van LearnVisualStudio.Net gezien en ik doe gewoon hetzelfde volgens mij, maar bij mij werkt het niet :/

Wat doe ik verkeerd?

[ Voor 29% gewijzigd door FlowDesign op 14-03-2006 01:02 ]

Mustang Mach-E SR RWD | MINI Countryman (F60) Cooper S


  • FlowDesign
  • Registratie: Januari 2002
  • Laatst online: 09:05
Kan een modje de titel veranderen naar "Data wordt niet gesaved naar SQL database" o.i.d. ?
Dankje :)
Doe dit in 't vervolg ff met een topicreport aub

[ Voor 27% gewijzigd door whoami op 14-03-2006 08:49 ]

Mustang Mach-E SR RWD | MINI Countryman (F60) Cooper S


  • Mastermind
  • Registratie: Februari 2000
  • Laatst online: 17-01 10:57
Laat eens een stuk relevante code zien?

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:31
Dat is denk ik een beetje het probleem met sleur'n pleur. Je weet op den duur niet meer precies wat er gebeurt of waar je mee bezig bent.

Ik veronderstel dat je met een dataset werkt, waarin je de gegevens toevoegt, en dan mbhv de Update() method van de DataAdapter deze gegevens naar de DB stuurt ?

Kan je, voordat je de DataAdapter.Update() method uitvoert, eens kijken of er wel wijzigingen zijn in de DataSet ? (theDataSet.HasChanges()).
Ben je ook zeker dat je DataAdapter de juiste InsertCommand en UpdateCommand bevat ?

https://fgheysels.github.io/


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 11-02 11:25

Bosmonster

*zucht*

Volgens mij slaat ie de data niet permanent op in debugmode?

Maak er eens een executable van en probeer het zo?

(die video's zijn gemaakt met een vroege beta versie, het kan zijn dat daar een verschil in zit natuurlijk)

[ Voor 33% gewijzigd door Bosmonster op 14-03-2006 09:13 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:31
Bosmonster schreef op dinsdag 14 maart 2006 @ 09:12:
Volgens mij slaat ie de data niet permanent op in debugmode?
:? En wat zou daar de achterliggende reden van zijn ?

https://fgheysels.github.io/


  • FlowDesign
  • Registratie: Januari 2002
  • Laatst online: 09:05
Ik heb de .msi file van Lesson09 van deze MSDN site http://msdn.microsoft.com...arp/learning/default.aspx eens gedownload en die solution in mijn Visual Studio 2005 EE geopend, als ik die run in Debug mode dan heb ik exact hetzelfde, veranderingen worden tijdens runtime wel opgeslagen in de DataSet, maar niet doorgevoerd naar de DataBase.

Ik doe niks bijzonders, gewoon een EndEdit() op de BindingSource en daarna een Update() op de TableAdapter. Zou toch voldoende moeten zijn?

Mustang Mach-E SR RWD | MINI Countryman (F60) Cooper S


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:31
Heb je al gekeken of je DataSet changes heeft ?
Heb je al gekeken of je DataAdapter de goede commands heeft ?

https://fgheysels.github.io/


  • FlowDesign
  • Registratie: Januari 2002
  • Laatst online: 09:05
whoami schreef op dinsdag 14 maart 2006 @ 14:37:
Heb je al gekeken of je DataSet changes heeft ?
Hij returnt het aantal gewijzigde rijen van de DataSet met het aantal dat ik ook verwacht.
Heb je al gekeken of je DataAdapter de goede commands heeft ?
Wat bedoel je hier precies mee en hoe check ik dat?

Ik neem aan dat het niet aan de rechten op de database(server) ligt, dat staat allemaal gewoon op local user ingesteld. Mss kun je idd in debugmode niets doorvoeren naar de database zoals iemand al zei, of is dat onzin?

Mustang Mach-E SR RWD | MINI Countryman (F60) Cooper S


  • FlowDesign
  • Registratie: Januari 2002
  • Laatst online: 09:05
Stukje code voor de duidelijkheid:
code:
1
2
3
4
5
6
7
8
9
10
private void table1BindingNavigatorSaveItem_Click(object sender, EventArgs e)
{
    //this.Validate();
    this.table1BindingSource.EndEdit();

    int result = 0;
    result = this.table1TableAdapter.Update(this.testappDatabaseDataSet);

   MessageBox.Show("Aantal rijen: " + result.ToString());
}

[ Voor 10% gewijzigd door FlowDesign op 14-03-2006 14:55 ]

Mustang Mach-E SR RWD | MINI Countryman (F60) Cooper S


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:31
FlowDesign schreef op dinsdag 14 maart 2006 @ 14:50:
[...]


Wat bedoel je hier precies mee en hoe check ik dat?
Een data-adapter heeft een InsertCommand property, een UpdateCommand property een SelectCommand property en een DeleteCommand property.
Ik neem aan dat een TableAdapter dit ook heeft ? Met deze properties specifieer je de commands die moeten uitgevoerd worden als er een row toegevoegd, gewijzigd of verwijderd wordt.
Mss kun je idd in debugmode niets doorvoeren naar de database zoals iemand al zei, of is dat onzin?
Dat is onzin imho

Als het aan de rechten zou liggen, dan zou je een exceptie krijgen.

Wat ik me ook nog kan inbeelden, is dat je die update ergens binnen een transactie doet, die je nergens commit.

[ Voor 14% gewijzigd door whoami op 14-03-2006 15:21 ]

https://fgheysels.github.io/


  • St-Bun
  • Registratie: November 2000
  • Laatst online: 18-02 18:29
Dit gebeurt er:
Je slaat je database-file ergens op, deze open je in je data explorer.
Je runt je prog wat je gelinked hebt aan die file. Visual studio kopieert die file dan naar de Debug-map. Hij overschrijft het bestand (en dus de data) elke keer als je een build maakt.

O dus


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:31
Visual Studio zal je database niet naar je debug map gaan kopieëren.
Je database is geen onderdeel van je project.

Toon eens hoe je een connectie maakt met de DB.

https://fgheysels.github.io/


  • FlowDesign
  • Registratie: Januari 2002
  • Laatst online: 09:05
St-Bun heeft gelijk.

Als ik de .exe vanuit de map \bin\Release run dan wat verander en opsla, het programma afsluit en daarna weer opstart, dan blijft de data bewaard. Tevens veranderd de Date Modified van de .mdf file in explorer bij het afsluiten naar de datum-tijd van het moment van afsluiten.

Ik denk dat we dus moeten concluderen dat de data in Debug mode vanuit Visual Studio zelf niet in de database wordt opgeslagen, of zoals hij het zegt... de originele database wordt telkens bij afsluiten teruggezet.
Ik heb idd zowel in de project map een .mdf, als in de map \bin\Debug\ en in de map \bin\Release\

P.S.
Heeft Visual Studio geen manier van je project opslaan als 1 executable of Installer o.i.d. ?

[ Voor 8% gewijzigd door FlowDesign op 15-03-2006 01:13 ]

Mustang Mach-E SR RWD | MINI Countryman (F60) Cooper S


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:31
De data wordt wel in de database opgeslagen, maar je mdf file (je database file) wordt overschreven.

Nu kan je je afvragen waarom dat gebeurt; waarom doe je het op een manier waardoor VS.NET die file wil kopieren. In een real world situatie, staat je database altijd op dezelfde plek, en ga je die niet lokaal gaan kopieeren.

Als je je project build, dan worden er exe's en dll's gemaakt. Je kan een install project ook maken.

https://fgheysels.github.io/


  • Mastermind
  • Registratie: Februari 2000
  • Laatst online: 17-01 10:57
Moet je CopyLocal op False zetten.

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:31
Normaal gezien hoeft die mdf file niet eens deel uit te maken van je project.
De enige verwijzing die je binnen je project naar je DB hoeft te hebben, is je connectie-string.

https://fgheysels.github.io/


  • FlowDesign
  • Registratie: Januari 2002
  • Laatst online: 09:05
whoami schreef op dinsdag 14 maart 2006 @ 19:36:
Normaal gezien hoeft die mdf file niet eens deel uit te maken van je project.
De enige verwijzing die je binnen je project naar je DB hoeft te hebben, is je connectie-string.
True, maar met VS.NET 2005 EE heb ik meteen SQL Server 2005 EE mee geïnstalleerd en heb ik de database dus ook in VS.NET gemaakt, dus die zit in de solution (het project) :)

Mustang Mach-E SR RWD | MINI Countryman (F60) Cooper S


  • FlowDesign
  • Registratie: Januari 2002
  • Laatst online: 09:05
whoami schreef op dinsdag 14 maart 2006 @ 16:10:
Als je je project build, dan worden er exe's en dll's gemaakt. Je kan een install project ook maken.
Ik zie dat er onder Build een keuze 'Publish' bestaat en die maakt een Setup aan enzo.
Maar dat is niet echt wat ik bedoel met een Installer.

Is er ook een manier om een echte installer te maken (.msi file bijvoorbeeld) vanuit VS.NET waarbij je meer zelf in kunt stellen? Bij die 'Publish' functie kun je zelf eigenlijk niks instellen heb ik het idee.

Mustang Mach-E SR RWD | MINI Countryman (F60) Cooper S


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:31
Ja, maar dan moet je ff een setup project toevoegen aan je solution.

https://fgheysels.github.io/

Pagina: 1