[VB.net / ADO.NET] Database Updaten

Pagina: 1
Acties:

  • FMS
  • Registratie: Juni 2001
  • Niet online
ik probeer een connectie te maken met een Database om gegevens in een DataGrid laten zien en weizigen, de laatste wil niet helemaal lukken.

Ik heb alles stap-voor-stap gevolgd volgens het boek maar ik krijg de volgende error waneer ik op de Update button druk.
Afbeeldingslocatie: http://www.theforumisdown.com/uploadfiles/1102/error20032.JPG

Het volgende Code heb ik onder de button Update:
code:
1
2
3
4
5
6
7
 Private Sub btnUpdate_Click(ByVal sender As System.......  btnUpdate.Click
         Try
            OleDbDataAdapter1.Update(DsMoviedatabase21)
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    End Sub


Ik zou niet weten hoe ik verder moet gaan zoeken op google oid. Dus spijt me als dit een n00b vraag is maar ik kom echt niet verder. :)

[ Voor 20% gewijzigd door FMS op 24-01-2003 18:04 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 12:26
Je hebt een syntax error in je update sql query die je aan je data adapter hebt gehangen.
Dit moest je toch wel kunnen opmaken uit die foutmelding?

Check dus ff waar die fout zit in je sql - string van je update - statement.

https://fgheysels.github.io/


  • FMS
  • Registratie: Juni 2001
  • Niet online
sorry maar daar word ik niet wijzer van.

ik begrijp natuurlijk dat het een syntax error ivm de Database is, maar niet specifiek waar of hoe.

Als iemand ff de tijd wil nemen kan ik mijn programma sturen zodat jullie zelf een kijkje kunnen nemen, ik ben werkelijk ten einderaad.

  • Buzzman
  • Registratie: Juni 2000
  • Niet online
Je weet toch zeker wel wat voor query je naar de database stuurt? Het zal eruit zien als "update table set blabla=bla where .... "

En in die query zit de fout volgens jou error melding.

  • FMS
  • Registratie: Juni 2001
  • Niet online
is dit em?



UPDATE moviedatabase
SET [Movie Title] = ?, Genre = ?, Year = ?, Runtime = ?, Director = ?, Casting = ?, Plot = ?, Rating = ?
WHERE ([Movie Title] = ?) AND (Casting = ? OR
? IS NULL AND Casting IS NULL) AND (Director = ? OR
? IS NULL AND Director IS NULL) AND (Genre = ? OR
? IS NULL AND Genre IS NULL) AND (Plot = ? OR
? IS NULL AND Plot IS NULL) AND (Rating = ? OR
? IS NULL AND Rating IS NULL) AND (Runtime = ? OR
? IS NULL AND Runtime IS NULL) AND (Year = ? OR
? IS NULL AND Year IS NULL)

  • whoami
  • Registratie: December 2000
  • Laatst online: 12:26
Ja, dat is hem.
Maar ik denk dat het beter voor je is dat je je eerst eens verder verdiept in .NET en SQL, want ik heb de indruk dat je eigenlijk niet goed weet met wat je bezig bent.

Ik vermoed alleszins dat je in .NET geen vraagteken mag gebruiken als parameter place-holder, en ik vind het ook niet zo kosjer dat je een parameter gebruikt om een veldnaam aan te duiden.
Is het eigenlijk wel nodig dat je zo'n uitgebreide where clausule hebt in die update query? Is het niet voldoende als je gewoon op de Primary key checked in die where?

Verander je query eens als volgt:
code:
1
2
3
Update tabel
SET veld = @p_param1, veld2 = @p_param2
....

Dan moet je nog je parameters adden aan het command object, en de waardes opvullen:
code:
1
2
OleDbCommand1.Parameters.Add ("@p_param1", OleDbType.VarChar);
OleDbCommand1.Parameters["@p_param1"].Value = "hier komt iets";

let op, dit is wel C# code, maar is makkelijk om te zetten naar vb.net

https://fgheysels.github.io/


  • FMS
  • Registratie: Juni 2001
  • Niet online
het is gelukt. :)

Ik ben idd nieuw met vb, of welke programeer taal dan ook.

bedankt voor je hulp.

  • tijn
  • Registratie: Februari 2000
  • Laatst online: 31-07 00:06
whoami schreef op 25 January 2003 @ 11:24:
Ik vermoed alleszins dat je in .NET geen vraagteken mag gebruiken als parameter place-holder, en ik vind het ook niet zo kosjer dat je een parameter gebruikt om een veldnaam aan te duiden.
Is het eigenlijk wel nodig dat je zo'n uitgebreide where clausule hebt in die update query? Is het niet voldoende als je gewoon op de Primary key checked in die where?
Een vraagteken mag zeker wel. Het update statement komt zo te zien uit de data adapter wizard, met optimistic concurrency aangevinkt :). Vandaar die bizarre where clause.

Cuyahoga .NET website framework


  • whoami
  • Registratie: December 2000
  • Laatst online: 12:26
tijn schreef op 25 January 2003 @ 17:32:
[...]

Een vraagteken mag zeker wel. Het update statement komt zo te zien uit de data adapter wizard, met optimistic concurrency aangevinkt :). Vandaar die bizarre where clause.



Bij de OleDb classes mag het misschien wel, maar bij de SqlClient classes niet:

http://www.dotnet247.com/247reference/msgs/27/137120.aspx
<From MSDN>
The SQL Server.NET Data Provider does not support the question mark (?)
placeholder for passing parameters to a SQL Statement or a stored procedure
called by a Command of CommandType.Text. In this case, named parameters must
be used. For example:

SELECT * FROM Customers WHERE CustomerID = @CustomerID

</From MSDN>

[ Voor 30% gewijzigd door whoami op 27-01-2003 09:28 ]

https://fgheysels.github.io/


  • tijn
  • Registratie: Februari 2000
  • Laatst online: 31-07 00:06
whoami schreef op 27 January 2003 @ 09:27:
Bij de OleDb classes mag het misschien wel, maar bij de SqlClient classes niet:

http://www.dotnet247.com/247reference/msgs/27/137120.aspx
Inderdaad! Je hebt helemaal gelijk.
Nu vraag ik me af waarom ze bij OleDb uberhaupt die vraagtekens wel toestaan (en de wizard ze genereert, terwijl die bij een SqlDataAdapter wel @parameters in de code zet) :?

Cuyahoga .NET website framework


  • whoami
  • Registratie: December 2000
  • Laatst online: 12:26
tijn schreef op 27 January 2003 @ 10:52:
[...]

Inderdaad! Je hebt helemaal gelijk.
Nu vraag ik me af waarom ze bij OleDb uberhaupt die vraagtekens wel toestaan (en de wizard ze genereert, terwijl die bij een SqlDataAdapter wel @parameters in de code zet) :?


'k Heb er ook geen idee van....

https://fgheysels.github.io/

Pagina: 1