[C#] Probleem Update query

Pagina: 1
Acties:

  • B2
  • Registratie: April 2000
  • Laatst online: 21:10

B2

wa' seggie?

Topicstarter
We zijn hier bezig met een webform waarin een update functie zit.
Nu gebruiken we daarvoor de volgende code

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
            sqlUpdateCommand2.Parameters["@school_naam"].Value = fldSchool_naam.Text;
            sqlUpdateCommand2.Parameters["@school_wachtwoord"].Value = fldSchool_wachtwoord.Text;
            sqlUpdateCommand2.Parameters["@school_adres"].Value = fldSchool_adres.Text;
            sqlUpdateCommand2.Parameters["@school_postcode"].Value = fldSchool_postcode.Text;
            sqlUpdateCommand2.Parameters["@contactpersoon_naam"].Value = fldContactpersoon_naam.Text;
            sqlUpdateCommand2.Parameters["@contactpersoon_tel"].Value = fldContactpersoon_tel.Text;
            sqlUpdateCommand2.Parameters["@contactpersoon_email"].Value = fldContactpersoon_email.Text;

            sqlUpdateCommand2.Parameters["@school_id"].Value = Convert.ToInt32(Request.QueryString["id"]);

            scholenConnection.Open();
            sqlUpdateCommand2.ExecuteNonQuery();
            scholenConnection.Close();
        }


De volgende dataadapter gebruiken we om de update door te voeren in de database.

code:
1
2
3
4
UPDATE    scholen
SET              school_naam = @school_naam, school_wachtwoord = @school_wachtwoord, school_adres = @school_adres, school_postcode = @school_postcode, 
                      contactpersoon_naam = @contactpersoon_naam, contactpersoon_tel = @contactpersoon_tel, contactpersoon_email = @contactpersoon_email
WHERE     (school_id = @school_id)


De SQL query is goed, wanneer we deze uitproberen in de Query Analyzer wordt de row netjes gewijzigd.

We komen er eigenlijk niet meer uit en krijgen het niet werkend. Dingen zoals verwijderen gaan wel goed.
Wat zou het probleem kunnen zijn?

  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 21-05 14:59

pjvandesande

GC.Collect(head);

Wat wil er nou precies niet dan?

  • nescafe
  • Registratie: Januari 2001
  • Laatst online: 22:04
Welke foutmelding krijg je? Wat zie in de in de SQL Profiler?

En inderdaad: wat zou het probleem kunnen zijn? Dat wordt niet geheel duidelijk in je post.

* Barca zweert ook bij fixedsys... althans bij mIRC de rest is comic sans


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Heb je al gedebugd? Hebben de parameters de correcte waarde?

Met Profiler (in je startmenu onder SQL Server) kun je zien welke query er daadwerkelijk naar de db is gestuurd.

Oops! Google Chrome could not find www.rijks%20museum.nl


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:32
Waarom heb je een data-adapter nodig als je al ExecNonQuery uitvoert op de command zelf?
Worden de waarden goed doorgegeven naar je query ?
Heb je al eens gedebugged, en gekeken welke waardes er als parameter worden doorgegeven?

Hmm, ik zie trouwens geen data-adapter? Bedoel je daar gewoon dat SQL Statement?

https://fgheysels.github.io/


  • B2
  • Registratie: April 2000
  • Laatst online: 21:10

B2

wa' seggie?

Topicstarter
Dat van die profiler wisten we nog niet! We hebben de query in de profiler bekeken en dit is volgens ons ook meteen het probleem:

code:
1
exec sp_executesql N'UPDATE scholen SET school_naam = @school_naam, school_wachtwoord = @school_wachtwoord, school_adres = @school_adres, school_postcode = @school_postcode, contactpersoon_naam = @contactpersoon_naam, contactpersoon_tel = @contactpersoon_tel, contactpersoon_email = @contactpersoon_email WHERE (school_id = @school_id)', N'@school_naam varchar(50),@school_wachtwoord varchar(50),@school_adres varchar(50),@school_postcode varchar(6),@contactpersoon_naam varchar(50),@contactpersoon_tel varchar(50),@contactpersoon_email varchar(50),@school_id int', @school_naam = 'jlk', @school_wachtwoord = 'lkj', @school_adres = 'lj', @school_postcode = 'kj', @contactpersoon_naam = 'ljk', @contactpersoon_tel = 'lk', @contactpersoon_email = 'jl', @school_id = 13


Om een of andere reden vult hij de variabelen niet met de waardes uit het formulier en plakt hij ze er gewoon achter, waardoor de database natuurlijk niet geupdate wordt.

Wij gebruiken een data-adapter waar de update query in opgeslagen staat en de connectiestring is hierbij gericht naar de goede database. Delete werkt op deze manier met dezelfde data-adapter wel.

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:32
Huh, die variabelen die erachter staan geven gewoon aan wat de inhoud van de parameters is hoor. Je query is gewoon goed.

ben je wel zeker dat de juiste waarden naar de query gestuurd worden, en niet de oude.
Misschien haal je in je page-load ofzo wel opnieuw de oude waarden op voordat je je update query naar de DB stuurt.

https://fgheysels.github.io/


  • B2
  • Registratie: April 2000
  • Laatst online: 21:10

B2

wa' seggie?

Topicstarter
We sturen de informatie in fldSchool_naam gewoon in en die worden als het goed is gewoon doorgestuurd. Ook als ik na het laden van de pagina de informatie weergeef uit dat veld dan krijg ik de nieuwe waardes te zien. Ze worden dus wel doorgestuurd, maar om een of andere vage reden doet de query of de database er niks mee.

  • Riegstar
  • Registratie: Februari 2003
  • Niet online

Riegstar

Wadapatja!

supergrover schreef op 13 april 2004 @ 11:31:
We zijn hier bezig met een webform waarin een update functie zit.
Nu gebruiken we daarvoor de volgende code

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
            sqlUpdateCommand2.Parameters["@school_naam"].Value = fldSchool_naam.Text;
            sqlUpdateCommand2.Parameters["@school_wachtwoord"].Value = fldSchool_wachtwoord.Text;
            sqlUpdateCommand2.Parameters["@school_adres"].Value = fldSchool_adres.Text;
            sqlUpdateCommand2.Parameters["@school_postcode"].Value = fldSchool_postcode.Text;
            sqlUpdateCommand2.Parameters["@contactpersoon_naam"].Value = fldContactpersoon_naam.Text;
            sqlUpdateCommand2.Parameters["@contactpersoon_tel"].Value = fldContactpersoon_tel.Text;
            sqlUpdateCommand2.Parameters["@contactpersoon_email"].Value = fldContactpersoon_email.Text;

            sqlUpdateCommand2.Parameters["@school_id"].Value = Convert.ToInt32(Request.QueryString["id"]);

            scholenConnection.Open();
            sqlUpdateCommand2.ExecuteNonQuery();
            scholenConnection.Close();
        }
Je bent vergeten om de parameters toe te voegen aan de Parameters collectie:
code:
1
2
sqlUpdateCommand2.Parameters.Add("@school_naam", System.Data.SqlDbType.VarChar,50);
sqlUpdateCommand2.Parameters["@school_naam"].Value = fldSchool_naam.Text;

[ Voor 7% gewijzigd door Riegstar op 13-04-2004 12:56 . Reden: Tiepo ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:32
Dat zou idd kunnen, maar ik denk dat je dan toch wel een error krijgt.

Doe je die update binnen een transactie, en vergeet je te committen?

https://fgheysels.github.io/


  • B2
  • Registratie: April 2000
  • Laatst online: 21:10

B2

wa' seggie?

Topicstarter
Het is ons al gelukt, we hebben het veld met de info gevuld met oude info voor hij het naar de database stuurde :)
Pagina: 1