473,795 Members | 3,002 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

OleDb Parameters BUG or BAD DESIGN

Hi,

I was performing SQL UPDATE queries and I notice that they SUCCEED on the
ExecuteNonQuery () call with NO exceptions raised BUT they fail at the
Database. They say they succeed in the code but they fail at the database.

To fix this they Parameters.Add must be called in the ORDER they are in
the SQL STATEMENT.

This is confusing and bad.

How to repro.
Construct a SQL query with the @ParamName .... out of order from the
Parameter.Add(" @ParamName", var); calls.

Thanks.

Nov 15 '05 #1
14 1247
Hi,

If you are using OleDb than markers for parameters are probably question
marks (?).
So, adding the parameters in the same order is the only way for OleDb to
recognize them.
Or is your scenario different?

--
Miha Markic - RightHand .NET consulting & software development
miha at rthand com
www.rthand.com

<di********@dis cussion.microso ft.com> wrote in message
news:u8******** ******@TK2MSFTN GP09.phx.gbl...
Hi,

I was performing SQL UPDATE queries and I notice that they SUCCEED on the ExecuteNonQuery () call with NO exceptions raised BUT they fail at the
Database. They say they succeed in the code but they fail at the database.

To fix this they Parameters.Add must be called in the ORDER they are in
the SQL STATEMENT.

This is confusing and bad.

How to repro.
Construct a SQL query with the @ParamName .... out of order from the
Parameter.Add(" @ParamName", var); calls.

Thanks.

Nov 15 '05 #2
I use DatabaseCommand .Parameters.Add ("@ParamName ", paramVar);

This is how it is documented and how it works today, the problem is the
ORDER oft he Parameter.Add( method calls MUST match the order in the SQL
statement.

This is NOT documented nor the logical design if we are using NAMED
PARAMATERS.

If it is dependant on the order we do NOT need named parameters then. That
is the entire concept of named parameters.

Its a bug or bad design in my book.
"Miha Markic" <miha at rthand com> wrote in message
news:%2******** ********@TK2MSF TNGP12.phx.gbl. ..
Hi,

If you are using OleDb than markers for parameters are probably question
marks (?).
So, adding the parameters in the same order is the only way for OleDb to
recognize them.
Or is your scenario different?

--
Miha Markic - RightHand .NET consulting & software development
miha at rthand com
www.rthand.com

<di********@dis cussion.microso ft.com> wrote in message
news:u8******** ******@TK2MSFTN GP09.phx.gbl...
Hi,

I was performing SQL UPDATE queries and I notice that they SUCCEED on

the
ExecuteNonQuery () call with NO exceptions raised BUT they fail at the
Database. They say they succeed in the code but they fail at the database.
To fix this they Parameters.Add must be called in the ORDER they are in the SQL STATEMENT.

This is confusing and bad.

How to repro.
Construct a SQL query with the @ParamName .... out of order from the
Parameter.Add(" @ParamName", var); calls.

Thanks.


Nov 15 '05 #3
There are 2 issues here.

1. It programatically succeeds on the ExecuteNonQuery () call when in fact
it does NOT succeed

and

2. Named parameters are not processed correctly if they are not in order of
the sql statement placement


"Miha Markic" <miha at rthand com> wrote in message
news:%2******** ********@TK2MSF TNGP12.phx.gbl. ..
Hi,

If you are using OleDb than markers for parameters are probably question
marks (?).
So, adding the parameters in the same order is the only way for OleDb to
recognize them.
Or is your scenario different?

--
Miha Markic - RightHand .NET consulting & software development
miha at rthand com
www.rthand.com

<di********@dis cussion.microso ft.com> wrote in message
news:u8******** ******@TK2MSFTN GP09.phx.gbl...
Hi,

I was performing SQL UPDATE queries and I notice that they SUCCEED on

the
ExecuteNonQuery () call with NO exceptions raised BUT they fail at the
Database. They say they succeed in the code but they fail at the database.
To fix this they Parameters.Add must be called in the ORDER they are in the SQL STATEMENT.

This is confusing and bad.

How to repro.
Construct a SQL query with the @ParamName .... out of order from the
Parameter.Add(" @ParamName", var); calls.

Thanks.


Nov 15 '05 #4
I don't know why this call succeeds but the OleDb database interface
doesn't support named parameters. See the remarks section of
OleDbParameter Class (
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003 FEB.1033/cpref/html/frlrfsystemdata ole
dboledbparamete rclasstopic.htm )
on my machine.
You can name them any way you like but they are position dependent and
only require a name to access them in the collection.

Ron Allen
<di********@dis cussion.microso ft.com> wrote in message
news:eB******** ******@TK2MSFTN GP11.phx.gbl...
There are 2 issues here.

1. It programatically succeeds on the ExecuteNonQuery () call when in fact
it does NOT succeed

and

2. Named parameters are not processed correctly if they are not in order of the sql statement placement


"Miha Markic" <miha at rthand com> wrote in message
news:%2******** ********@TK2MSF TNGP12.phx.gbl. ..
Hi,

If you are using OleDb than markers for parameters are probably question
marks (?).
So, adding the parameters in the same order is the only way for OleDb to
recognize them.
Or is your scenario different?

--
Miha Markic - RightHand .NET consulting & software development
miha at rthand com
www.rthand.com

<di********@dis cussion.microso ft.com> wrote in message
news:u8******** ******@TK2MSFTN GP09.phx.gbl...
Hi,

I was performing SQL UPDATE queries and I notice that they SUCCEED on
the
ExecuteNonQuery () call with NO exceptions raised BUT they fail at the
Database. They say they succeed in the code but they fail at the database.
To fix this they Parameters.Add must be called in the ORDER they
are
in the SQL STATEMENT.

This is confusing and bad.

How to repro.
Construct a SQL query with the @ParamName .... out of order from

the Parameter.Add(" @ParamName", var); calls.

Thanks.



Nov 15 '05 #5
You say on one hand it doesnt support named parameters then on the other you
say "only require a name to access them in the collection." so which is it?
Yes or no?


"Ron Allen" <rallen@_nospam _src-us.com> wrote in message
news:uI******** *****@TK2MSFTNG P12.phx.gbl...
I don't know why this call succeeds but the OleDb database interface
doesn't support named parameters. See the remarks section of
OleDbParameter Class (
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003 FEB.1033/cpref/html/frlrfsystemdata ole dboledbparamete rclasstopic.htm )
on my machine.
You can name them any way you like but they are position dependent and
only require a name to access them in the collection.

Ron Allen
<di********@dis cussion.microso ft.com> wrote in message
news:eB******** ******@TK2MSFTN GP11.phx.gbl...
There are 2 issues here.

1. It programatically succeeds on the ExecuteNonQuery () call when in fact
it does NOT succeed

and

2. Named parameters are not processed correctly if they are not in
order of
the sql statement placement


"Miha Markic" <miha at rthand com> wrote in message
news:%2******** ********@TK2MSF TNGP12.phx.gbl. ..
Hi,

If you are using OleDb than markers for parameters are probably question marks (?).
So, adding the parameters in the same order is the only way for OleDb to recognize them.
Or is your scenario different?

--
Miha Markic - RightHand .NET consulting & software development
miha at rthand com
www.rthand.com

<di********@dis cussion.microso ft.com> wrote in message
news:u8******** ******@TK2MSFTN GP09.phx.gbl...
> Hi,
>
> I was performing SQL UPDATE queries and I notice that they SUCCEED

on the
> ExecuteNonQuery () call with NO exceptions raised BUT they fail at the > Database. They say they succeed in the code but they fail at the

database.
>
> To fix this they Parameters.Add must be called in the ORDER they are
in
> the SQL STATEMENT.
>
> This is confusing and bad.
>
> How to repro.
> Construct a SQL query with the @ParamName .... out of order from

the > Parameter.Add(" @ParamName", var); calls.
>
>
>
> Thanks.
>
>
>



Nov 15 '05 #6
There is still the issue of it reporting a SUCCESS when it obviously fails
on the UPDATE at the database.

With the above out of order parameters its still returning success (no
exceptions) on the update when infact its NOT updating, zero rows affected.

"Ron Allen" <rallen@_nospam _src-us.com> wrote in message
news:uI******** *****@TK2MSFTNG P12.phx.gbl...
I don't know why this call succeeds but the OleDb database interface
doesn't support named parameters. See the remarks section of
OleDbParameter Class (
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003 FEB.1033/cpref/html/frlrfsystemdata ole dboledbparamete rclasstopic.htm )
on my machine.
You can name them any way you like but they are position dependent and
only require a name to access them in the collection.

Ron Allen
<di********@dis cussion.microso ft.com> wrote in message
news:eB******** ******@TK2MSFTN GP11.phx.gbl...
There are 2 issues here.

1. It programatically succeeds on the ExecuteNonQuery () call when in fact
it does NOT succeed

and

2. Named parameters are not processed correctly if they are not in
order of
the sql statement placement


"Miha Markic" <miha at rthand com> wrote in message
news:%2******** ********@TK2MSF TNGP12.phx.gbl. ..
Hi,

If you are using OleDb than markers for parameters are probably question marks (?).
So, adding the parameters in the same order is the only way for OleDb to recognize them.
Or is your scenario different?

--
Miha Markic - RightHand .NET consulting & software development
miha at rthand com
www.rthand.com

<di********@dis cussion.microso ft.com> wrote in message
news:u8******** ******@TK2MSFTN GP09.phx.gbl...
> Hi,
>
> I was performing SQL UPDATE queries and I notice that they SUCCEED

on the
> ExecuteNonQuery () call with NO exceptions raised BUT they fail at the > Database. They say they succeed in the code but they fail at the

database.
>
> To fix this they Parameters.Add must be called in the ORDER they are
in
> the SQL STATEMENT.
>
> This is confusing and bad.
>
> How to repro.
> Construct a SQL query with the @ParamName .... out of order from

the > Parameter.Add(" @ParamName", var); calls.
>
>
>
> Thanks.
>
>
>



Nov 15 '05 #7
Hey discussion man,

SQL *named* parameter markers are *not* supported via OleDb managed
provider.
Read this:
http://support.microsoft.com/default...b;en-us;316744

--
Miha Markic - RightHand .NET consulting & software development
miha at rthand com
www.rthand.com

<di********@dis cussion.microso ft.com> wrote in message
news:uo******** ******@TK2MSFTN GP09.phx.gbl...
You say on one hand it doesnt support named parameters then on the other you say "only require a name to access them in the collection." so which is it? Yes or no?


"Ron Allen" <rallen@_nospam _src-us.com> wrote in message
news:uI******** *****@TK2MSFTNG P12.phx.gbl...
I don't know why this call succeeds but the OleDb database interface
doesn't support named parameters. See the remarks section of
OleDbParameter Class (

ms-help://MS.VSCC.2003/MS.MSDNQTR.2003 FEB.1033/cpref/html/frlrfsystemdata ole
dboledbparamete rclasstopic.htm )
on my machine.
You can name them any way you like but they are position dependent and
only require a name to access them in the collection.

Ron Allen
<di********@dis cussion.microso ft.com> wrote in message
news:eB******** ******@TK2MSFTN GP11.phx.gbl...
There are 2 issues here.

1. It programatically succeeds on the ExecuteNonQuery () call when in fact it does NOT succeed

and

2. Named parameters are not processed correctly if they are not in order
of
the sql statement placement


"Miha Markic" <miha at rthand com> wrote in message
news:%2******** ********@TK2MSF TNGP12.phx.gbl. ..
> Hi,
>
> If you are using OleDb than markers for parameters are probably question > marks (?).
> So, adding the parameters in the same order is the only way for
OleDb to > recognize them.
> Or is your scenario different?
>
> --
> Miha Markic - RightHand .NET consulting & software development
> miha at rthand com
> www.rthand.com
>
> <di********@dis cussion.microso ft.com> wrote in message
> news:u8******** ******@TK2MSFTN GP09.phx.gbl...
> > Hi,
> >
> > I was performing SQL UPDATE queries and I notice that they
SUCCEED on
> the
> > ExecuteNonQuery () call with NO exceptions raised BUT they fail at the > > Database. They say they succeed in the code but they fail at the
database.
> >
> > To fix this they Parameters.Add must be called in the ORDER

they are
in
> > the SQL STATEMENT.
> >
> > This is confusing and bad.
> >
> > How to repro.
> > Construct a SQL query with the @ParamName .... out of order
from the
> > Parameter.Add(" @ParamName", var); calls.
> >
> >
> >
> > Thanks.
> >
> >
> >
>
>



Nov 15 '05 #8
Ok, make it a FEATURE REQEST then :D

The collection can be accessed by parameter name so why cant we have named
parameters?


"Miha Markic" <miha at rthand com> wrote in message
news:uY******** ******@TK2MSFTN GP09.phx.gbl...
Hey discussion man,

SQL *named* parameter markers are *not* supported via OleDb managed
provider.
Read this:
http://support.microsoft.com/default...b;en-us;316744

--
Miha Markic - RightHand .NET consulting & software development
miha at rthand com
www.rthand.com

<di********@dis cussion.microso ft.com> wrote in message
news:uo******** ******@TK2MSFTN GP09.phx.gbl...
You say on one hand it doesnt support named parameters then on the other

you
say "only require a name to access them in the collection." so which is

it?
Yes or no?


"Ron Allen" <rallen@_nospam _src-us.com> wrote in message
news:uI******** *****@TK2MSFTNG P12.phx.gbl...
I don't know why this call succeeds but the OleDb database interface doesn't support named parameters. See the remarks section of
OleDbParameter Class (

ms-help://MS.VSCC.2003/MS.MSDNQTR.2003 FEB.1033/cpref/html/frlrfsystemdata ole
dboledbparamete rclasstopic.htm )
on my machine.
You can name them any way you like but they are position dependent and only require a name to access them in the collection.

Ron Allen
<di********@dis cussion.microso ft.com> wrote in message
news:eB******** ******@TK2MSFTN GP11.phx.gbl...
> There are 2 issues here.
>
> 1. It programatically succeeds on the ExecuteNonQuery () call when
in
fact
> it does NOT succeed
>
> and
>
> 2. Named parameters are not processed correctly if they are not in

order
of
> the sql statement placement
>
>
>
>
>
>
>
>
> "Miha Markic" <miha at rthand com> wrote in message
> news:%2******** ********@TK2MSF TNGP12.phx.gbl. ..
> > Hi,
> >
> > If you are using OleDb than markers for parameters are probably

question
> > marks (?).
> > So, adding the parameters in the same order is the only way for OleDb
to
> > recognize them.
> > Or is your scenario different?
> >
> > --
> > Miha Markic - RightHand .NET consulting & software development
> > miha at rthand com
> > www.rthand.com
> >
> > <di********@dis cussion.microso ft.com> wrote in message
> > news:u8******** ******@TK2MSFTN GP09.phx.gbl...
> > > Hi,
> > >
> > > I was performing SQL UPDATE queries and I notice that they

SUCCEED on
> > the
> > > ExecuteNonQuery () call with NO exceptions raised BUT they fail
at the
> > > Database. They say they succeed in the code but they fail at the
> database.
> > >
> > > To fix this they Parameters.Add must be called in the ORDER

they are
> in
> > > the SQL STATEMENT.
> > >
> > > This is confusing and bad.
> > >
> > > How to repro.
> > > Construct a SQL query with the @ParamName .... out of order from the
> > > Parameter.Add(" @ParamName", var); calls.
> > >
> > >
> > >
> > > Thanks.
> > >
> > >
> > >
> >
> >
>
>



Nov 15 '05 #9
Hi,

<di********@dis cussion.microso ft.com> wrote in message
news:uB******** ********@TK2MSF TNGP09.phx.gbl. ..
There is still the issue of it reporting a SUCCESS when it obviously fails
on the UPDATE at the database.

With the above out of order parameters its still returning success (no
exceptions) on the update when infact its NOT updating, zero rows

affected.

Since when should SQL server (or any other database server) complain when
there are no rows updated?
If you take a look at ExecuteNonQuery () you'll see that it returns the
number of rows affected.

--
Miha Markic - RightHand .NET consulting & software development
miha at rthand com
www.rthand.com
Nov 15 '05 #10

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

14
3432
by: | last post by:
Hi, I was performing SQL UPDATE queries and I notice that they SUCCEED on the ExecuteNonQuery() call with NO exceptions raised BUT they fail at the Database. They say they succeed in the code but they fail at the database. To fix this they Parameters.Add must be called in the ORDER they are in the SQL STATEMENT. This is confusing and bad.
9
4778
by: Pam Ammond | last post by:
I need the code to update the database when Save is clicked and a text field has changed. This should be very easy since I used Microsoft's wizards for the OleDBAdapter and OleDBConnection, and DataSet; and all I'm doing is showing one record in text fields, allowing the user to modify the text fields, and then updating the database again when the user clicks the Save button. The fields already show the correct data record since I have...
0
5676
by: NicK chlam via DotNetMonster.com | last post by:
this is the error i get System.Data.OleDb.OleDbException: Syntax error in INSERT INTO statement. at System.Data.Common.DbDataAdapter.Update(DataRow dataRows, DataTableMapping tableMapping) at System.Data.Common.DbDataAdapter.Update(DataSet dataSet, String srcTable) at System.Data.Common.DbDataAdapter.Update(DataSet dataSet) at TryThis.Form1.save() in C:\Documents and Settings\Nick\My Documents\...
0
9519
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
0
10439
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
0
10215
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
1
10165
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
0
10001
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
1
7541
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
6783
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
5437
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
2
3727
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.