473,785 Members | 2,801 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.

Jul 21 '05 #1
14 3429
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.

Jul 21 '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.


Jul 21 '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.


Jul 21 '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.



Jul 21 '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.
>
>
>



Jul 21 '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.
>
>
>



Jul 21 '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.
> >
> >
> >
>
>



Jul 21 '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.
> > >
> > >
> > >
> >
> >
>
>



Jul 21 '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
Jul 21 '05 #10

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

Similar topics

14
1247
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
9645
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look ! Part I. Meaning of...
0
10324
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
10147
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
10090
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
9949
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...
0
8971
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
0
6739
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();...
1
4050
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
2
3645
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.