Toon posts:

[VB.net] where commando niet geaccepteerd

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig omeen schoolagenda progje te maken voor op de pocket pc, ik gebruik visual basic .net 2003 mb.v. pocketpc 2003 sdk. Om de informatie op te slaan gebruik ik sqlserverce 2.0. Maar ik zit met een probleem ik krijg het niet voor elkaar om een where commando te krijgen in mij sql-code en die dan ook uitgevoerd te krijgen, ditis de bron code waar het probleem zich voordoet:

Dim com As New SqlCeConnection(datasource)
com.Open()

Dim sql As SqlCeCommand = com.CreateCommand
sql.CommandText = "Delete from Vakken Where vak=" + ListBox1.SelectedItem
sql.ExecuteNonQuery()

hij geeft een fout melding bij de laatste regel (met executenonquery). ik doe denk ik iets fout maar zonder where en parameters doet hij het wel gewoon, en de sqlcode doet het wel gewoon goed op mysql database, ik heb gezocht en gevonden dat mysql en sql sefver van microsoft de zelfde sql-codes gebruiken maar daar lijkt het zo niet op.
Kan iemand me hierbij helpen?

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Is vak een tekstveld? Dan moeten er quotes om de waarde

code:
1
WHERE Vak ='" + Listbox1.SelectedItem + "'"

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


  • whoami
  • Registratie: December 2000
  • Laatst online: 16:52
Hoe ziet je query eruit.
Print 'm eens naar het scherm vooraleer je'm uitvoert.
Gebruik parametrized queries.

Trouwens, dit heeft niet zozeer iets met VB te maken, eerder met VB.NET en nog eerder met SQL.
Je moet quotes zetten rond niet-numerieke waarden, en dat doe je hier niet. Als je parametrized queries gebruikt, zal het DBMS Dat automatisch voor jou doen.
In de FAQ staat er een stukje over parametrized queries.

https://fgheysels.github.io/


Verwijderd

Ik heb geen verstand van vb.net, maar wel van vb6 en in vb6 moet je gebruik maken van het & teken ipv een +. Bovendien moet je inderdaad quotes om tekst zetten in je query.

Je krijgt dan:
code:
1
sql.CommandText = "Delete from Vakken Where vak='" & ListBox1.SelectedItem & "'"

Verwijderd

Topicstarter
Quotes werken niet die had ik hier ff voor de duidelijkheid weg gelaten

sql.commandtext = "Delete from Vakken Where vak='Levensbeschouwing'"

zoziet de commandtext eruit na maken

foutmelding daarna: An unhandled exception of type 'System.Data.SqlServerCe.SqlCeException' occurred in System.Data.SqlServerCe.dll

die ik altijd krijg na een fout in de sql code

en ik heb net gezegt dat de sql code in mysql wel goed is dus aan sql moet het toch niet kunnen liggen??

Verwijderd

Topicstarter
Verwijderd schreef op 08 september 2004 @ 15:53:
Ik heb geen verstand van vb.net, maar wel van vb6 en in vb6 moet je gebruik maken van het & teken ipv een +. Bovendien moet je inderdaad quotes om tekst zetten in je query.

Je krijgt dan:
code:
1
sql.CommandText = "Delete from Vakken Where vak='" & ListBox1.SelectedItem & "'"
sql.commandtext is goed zoals in mn vorige reply te zien is ook goed gegenereerd en in vb6 mag je ook + gebruiken hoor

Verwijderd

Alle DBMS'en gebruiken een ander dialect van SQL. Zo gebruikt Oracle PL/SQL en MS SQL gebruikt T-SQL. MySQL zal dus ook zijn eigen dialect hebben. Overigens zal je daar met deze query niets van merken...

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Krijg je niet een uitgebreidere foutmelding? De SQL code lijkt idd goed.

Wil je trouwens niet weer essentiele dingen weglaten voor het gemak?

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


  • whoami
  • Registratie: December 2000
  • Laatst online: 16:52
Welke foutmeldingen krijg je trouwens allemaal?
Kijk ook eens naar de InnerException(s) van de exceptie die je krijgt.

https://fgheysels.github.io/


Verwijderd

Topicstarter
Ja, zover was ik ook maar dan zit ik nog steeds met dit probleem waar in mijn ogen eigenlijk niet veel mis mee kan zijn?

in een ander deel van mn progje gebruik ik ook noge en keer where geeft hijde zelfde foutmelding. Kan het soms dat sqlserverce gewoon dan niet ondersteund maar dat zou wel raar zijn moet je een eigen filter systeem maken, dit lijkt me stug

Hmm ja sorry van die info, mss heb je hier nog iets aan?
of zal ik gewoon ff mn gehele broncode sturen, ik moet het alleen nog debuggen dus....

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Als je nou eens gewoon die exception een keer vangt en kijkt wat daar aan informatie instaat. Broncode sturen doen we niet aan, Programming & Webscripting is geen gratis debug-my-code service.

En VB.net is idd heel wat anders dan VB.

Professionele website nodig?


  • klaasopurk
  • Registratie: Februari 2004
  • Laatst online: 22-05 18:21
hmz misschien dat dit je helpen kan

in C# moet je het zo doen, ik denk dat het in VB ongeveer hetzelfde is.
je moet wel je excecutenonquery try catchen

eerst connectie openen met een trycatch voor als de mysqlserver niet aan staat

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
try
                    {
                        this.odbcConnection1.Open();
                    }
                    catch(System.Data.Odbc.OdbcException){MessageBox.Show("De database is onbereikbaar.", "Database ongebereikbaar", System.Windows.Forms.MessageBoxButtons.OK,System.Windows.Forms.MessageBoxIcon.Warning); return;};
            
                    //query aanmaken
                    this.odbcCommandUpdate.CommandText = "UPDATE bezorgdagen SET datum = '"+ this.dtpDatum.Value.Date.Year.ToString() + "-" + this.dtpDatum.Value.Date.Month.ToString() + "-" + this.dtpDatum.Value.Date.Day.ToString() +"', reden = '"+ this.txtReden.Text.ToString() +"' where IDbezorgdagen = '"+ ID.ToString() +"';";


                    try
                    {
                        this.odbcInsertCommand.ExecuteNonQuery();
                    }
                    catch(InvalidOperationException)
                    {
                        MessageBox.Show("De connectie met de database is niet geopend.");
                    }
                    //collectie sluiten
                    this.odbcConnection1.Close();


deze heb ik zo gebruikt en moet dus zo werken
let wel op dat het C# is dus de + tekens moeten weleens vervangen kunnen owrden door & of && tekens.

[ Voor 8% gewijzigd door gorgi_19 op 08-09-2004 19:42 . Reden: code-tags toegevoegd ]

Klaas

Pagina: 1