[Mono-list] InvalidOperationException when using a DataAdapter's
Update method (mono, npgsql)
Helge Lenuweit
helge at lenuweit.net
Sun May 22 09:16:53 EDT 2005
Hello folks,
I am seeing a weird InvalidOperationException being thrown when I use a
(Npgsql)DataAdapter's update method in a particular setting. As I'm
unsure where the error lies, I'm looking for help here before filing any
bugs.
Part of the problem might be that my db related stuff is coded against
the generic interfaces for the sake of db engine independence. The error
itself occurs on mono (1.1.7 in my case), regardless of whether used on
Windows or Linux, when using Npgsql as the database provider. It does
not occur on Windows with MS's framework 1.1 and Npgsql. It does also
not occur on mono/MS.NET with their respective System.Data.SqlClient
implementations.
Now here goes... The unrelated parts of an example program are left out.
The following expects a connection "conn" to opened to a certain
database with a table "table1" with an id, col1 of type varchar(50) and
col2 of type integer.
//Write back changes into database
IDbCommand cmdUpdate = new NpgsqlCommand("UPDATE table1 SET
col1=:p1, col2=:p2 WHERE id=" + id.ToString());
cmdUpdate.Parameters.Add( new NpgsqlParameter("p1",
NpgsqlTypes.NpgsqlDbType.Varchar, 0, "col1") );
cmdUpdate.Parameters.Add( new NpgsqlParameter("p2",
NpgsqlTypes.NpgsqlDbType.Integer, 0, "col2") );
cmdUpdate.Connection = conn;
da = new NpgsqlDataAdapter();
da.UpdateCommand = cmdUpdate;
da.TableMappings.Add("Table", "table1");
int affectedRows = da.Update( ds );
The error that is raised on the Update command is the following:
Unhandled Exception: System.InvalidOperationException: Cannot read data.
No result set.
in <0x0003c> Npgsql.NpgsqlDataReader:CheckHaveResultSet ()
in <0x00028> Npgsql.NpgsqlDataReader:Read ()
in <0x00777> System.Data.Common.DbDataAdapter:Update
(System.Data.DataRow[] dataRows, System.Data.Common.DataTableMapping
tableMapping)
I surely appreciate any hint to where the source of the problem can be
found ;-) For the records, Windows is XP/SP2, Linux is an older SuSE 9.1
with mono compiled from source.
Best regards,
Helge
More information about the Mono-list
mailing list