Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.

Changed by [EMAIL PROTECTED]

http://bugzilla.ximian.com/show_bug.cgi?id=82150

--- shadow/82150        2007-07-20 07:44:40.000000000 -0400
+++ shadow/82150.tmp.30525      2007-07-20 07:44:40.000000000 -0400
@@ -0,0 +1,273 @@
+Bug#: 82150
+Product: Mono: Runtime
+Version: 1.2
+OS: GNU/Linux [Other]
+OS Details: Ubuntu Feisty Fawn 64bit
+Status: NEW   
+Resolution: 
+Severity: 
+Priority: Wishlist
+Component: io-layer
+AssignedTo: [EMAIL PROTECTED]                            
+ReportedBy: [EMAIL PROTECTED]               
+QAContact: [EMAIL PROTECTED]
+TargetMilestone: ---
+URL: 
+Cc: 
+Summary: Npgsql Parameter bug.  likely cause of bug# 82148
+
+NpgsqlAdapter's UpdateCommand and InsertCommand's parameters must have
+match NpgsqlParameter ordering
+
+prior to placing: 
+
+this code ==> 
+insertDetail.Parameters.Add("p_ecmtp_rec_id", NpgsqlDbType.Varchar);
+insertDetail.Parameters["p_ecmtp_rec_id"].Value = ecmtRecId; 
+
+to the last statement ==>              insertDetail.Parameters.Add("p_remark",
+NpgsqlDbType.Varchar);
+insertDetail.Parameters["p_remark"].SourceColumn = "remark";
+
+
+the NpgsqlDataAdapter always feed '0' to insertCommand's paramater
+p_ecmtp_rec_id.  see the Postgresql log file below.
+
+
+why should the order of adding NpgsqlParameter should matter in Mono's
+Npgsql?  in .NET's Npgsql, the order of adding parameters to UpdateCommand
+and InsertCommand, doesn't matter, any ways NpgsqlParamater adding
+arrangement is, it just works.
+
+
+
+
+public override void Mono_ECMTP_Save(string ecmtRecId, DataTable[] dts)
+{
+
+       NpgsqlConnection c = Connect();
+
+       NpgsqlTransaction tx = c.BeginTransaction();
+
+       NpgsqlDataAdapter da = new NpgsqlDataAdapter();
+
+       try
+       {
+               NpgsqlCommand insertHeader = new NpgsqlCommand(
+                       @"insert into ecmtp(ecmtp_rec_id, company_code, 
shoe_section_code,
+material_code, testing_level)
+                       values(:p_ecmtp_rec_id, :p_company_code, 
:p_shoe_section_code,
+:p_material_code, :p_testing_level)", c);
+
+
+               insertHeader.Parameters.Add("p_ecmtp_rec_id", 
NpgsqlDbType.Varchar);
+               insertHeader.Parameters["p_ecmtp_rec_id"].Value = ecmtRecId;
+
+               insertHeader.Parameters.Add("p_company_code", 
NpgsqlDbType.Varchar);
+               insertHeader.Parameters["p_company_code"].SourceColumn = 
"company_code";
+
+               insertHeader.Parameters.Add("p_material_code", 
NpgsqlDbType.Varchar);
+               insertHeader.Parameters["p_material_code"].SourceColumn = 
"material_code";
+
+               insertHeader.Parameters.Add("p_shoe_section_code", 
NpgsqlDbType.Varchar);
+               insertHeader.Parameters["p_shoe_section_code"].SourceColumn =
+"shoe_section_code";
+
+
+               insertHeader.Parameters.Add("p_testing_level", 
NpgsqlDbType.Integer);
+               insertHeader.Parameters["p_testing_level"].SourceColumn = 
"testing_level";
+
+
+
+
+               NpgsqlCommand updateHeader = new NpgsqlCommand(
+                       @"update ecmtp set
+                               company_code = :p_company_code,
+                               shoe_section_code = :p_shoe_section_code,
+                               material_code = :p_material_code,
+                               testing_level = :p_testing_level
+                       where ecmtp_rec_id = :o_ecmtp_rec_id
+                               and :p_ecmtp_rec_id = :o_ecmtp_rec_id
+                               ", c);
+
+
+
+               updateHeader.Parameters.Add("o_ecmtp_rec_id", 
NpgsqlDbType.Varchar);
+               updateHeader.Parameters["o_ecmtp_rec_id"].SourceColumn = 
"ecmtp_rec_id";
+               updateHeader.Parameters["o_ecmtp_rec_id"].SourceVersion =
+DataRowVersion.Original;
+
+               updateHeader.Parameters.Add("p_ecmtp_rec_id", 
NpgsqlDbType.Varchar);
+               updateHeader.Parameters["p_ecmtp_rec_id"].SourceColumn = 
"ecmtp_rec_id";
+               updateHeader.Parameters["p_ecmtp_rec_id"].SourceVersion =
+DataRowVersion.Current;
+
+               updateHeader.Parameters.Add("p_company_code", 
NpgsqlDbType.Varchar);
+               updateHeader.Parameters["p_company_code"].SourceColumn = 
"company_code";
+
+               updateHeader.Parameters.Add("p_material_code", 
NpgsqlDbType.Varchar);
+               updateHeader.Parameters["p_material_code"].SourceColumn = 
"material_code";
+
+               updateHeader.Parameters.Add("p_shoe_section_code", 
NpgsqlDbType.Varchar);
+               updateHeader.Parameters["p_shoe_section_code"].SourceColumn =
+"shoe_section_code";
+
+               updateHeader.Parameters.Add("p_testing_level", 
NpgsqlDbType.Integer);
+               updateHeader.Parameters["p_testing_level"].SourceColumn = 
"testing_level";
+
+
+               da.DeleteCommand = null;
+               da.InsertCommand = insertHeader;
+               da.UpdateCommand = updateHeader;
+
+
+               if (dts[0] != null)                     
+                       da.Update(dts[0]);
+
+
+
+
+               NpgsqlCommand insertDetail = new NpgsqlCommand(
+                       @"insert into ecmtp_parameter(ecmtp_rec_id, 
ecmtp_parameter_rec_id,
+color_code, parameter_code, unit, value_span_code, value, method, remark)
+                       values( :p_ecmtp_rec_id , :p_ecmtp_parameter_rec_id, 
:p_color_code,
+:p_parameter_code, :p_unit, :p_value_span_code, :p_value, :p_method,
+:p_remark)", c);
+
+
+
+               
+
+               insertDetail.Parameters.Add("p_ecmtp_parameter_rec_id",
+NpgsqlDbType.Varchar);
+               
insertDetail.Parameters["p_ecmtp_parameter_rec_id"].SourceColumn =
+"ecmtp_parameter_rec_id";
+
+
+               insertDetail.Parameters.Add("p_color_code", 
NpgsqlDbType.Varchar);
+               insertDetail.Parameters["p_color_code"].SourceColumn = 
"color_code";
+
+
+               Console.WriteLine("ecmt rec id: " + ecmtRecId);
+
+               insertDetail.Parameters.Add("p_parameter_code", 
NpgsqlDbType.Varchar);
+               insertDetail.Parameters["p_parameter_code"].SourceColumn = 
"parameter_code";
+
+
+
+               insertDetail.Parameters.Add("p_unit", NpgsqlDbType.Varchar);
+               insertDetail.Parameters["p_unit"].SourceColumn = "unit";
+
+
+               insertDetail.Parameters.Add("p_value_span_code", 
NpgsqlDbType.Varchar);
+               insertDetail.Parameters["p_value_span_code"].SourceColumn =
+"value_span_code";
+
+
+               insertDetail.Parameters.Add("p_value", NpgsqlDbType.Numeric);
+               insertDetail.Parameters["p_value"].SourceColumn = "value";
+
+               insertDetail.Parameters.Add("p_method", NpgsqlDbType.Varchar);
+               insertDetail.Parameters["p_method"].SourceColumn = "method";
+
+               insertDetail.Parameters.Add("p_remark", NpgsqlDbType.Varchar);
+               insertDetail.Parameters["p_remark"].SourceColumn = "remark";
+
+
+
+               insertDetail.Parameters.Add("p_ecmtp_rec_id", 
NpgsqlDbType.Varchar);
+               insertDetail.Parameters["p_ecmtp_rec_id"].Value = ecmtRecId;
+
+
+
+
+
+               
+
+               NpgsqlCommand updateDetail = new NpgsqlCommand(
+                       @"update ecmtp_parameter set
+                               color_code = :p_color_code,
+                               parameter_code = :p_parameter_code,
+                               unit = :p_unit,
+                               value_span_code = :p_value_span_code,
+                               value = :p_value,
+                               method = :p_method,
+                               remark = :p_remark                              
        
+                       where ecmtp_parameter_rec_id = :o_ecmtp_parameter_rec_id
+                               and :p_ecmtp_parameter_rec_id = 
:o_ecmtp_parameter_rec_id", c);
+
+
+
+
+
+               updateDetail.Parameters.Add("p_ecmtp_parameter_rec_id",
+NpgsqlDbType.Varchar);
+               
updateDetail.Parameters["p_ecmtp_parameter_rec_id"].SourceColumn =
+"ecmtp_parameter_rec_id";
+               
updateDetail.Parameters["p_ecmtp_parameter_rec_id"].SourceVersion =
+DataRowVersion.Current;
+
+
+               updateDetail.Parameters.Add("o_ecmtp_parameter_rec_id",
+NpgsqlDbType.Varchar);
+               
updateDetail.Parameters["o_ecmtp_parameter_rec_id"].SourceColumn =
+"ecmtp_parameter_rec_id";
+               
updateDetail.Parameters["o_ecmtp_parameter_rec_id"].SourceVersion =
+DataRowVersion.Original;
+
+
+               updateDetail.Parameters.Add("p_color_code", 
NpgsqlDbType.Varchar);
+               updateDetail.Parameters["p_color_code"].SourceColumn = 
"color_code";
+
+
+               updateDetail.Parameters.Add("p_parameter_code", 
NpgsqlDbType.Varchar);
+               updateDetail.Parameters["p_parameter_code"].SourceColumn = 
"parameter_code";
+
+               updateDetail.Parameters.Add("p_unit", NpgsqlDbType.Varchar);
+               updateDetail.Parameters["p_unit"].SourceColumn = "unit";
+
+
+               updateDetail.Parameters.Add("p_value_span_code", 
NpgsqlDbType.Varchar);
+               updateDetail.Parameters["p_value_span_code"].SourceColumn =
+"value_span_code";
+
+
+               updateDetail.Parameters.Add("p_value", NpgsqlDbType.Numeric);
+               updateDetail.Parameters["p_value"].SourceColumn = "value";
+
+               updateDetail.Parameters.Add("p_method", NpgsqlDbType.Varchar);
+               updateDetail.Parameters["p_method"].SourceColumn = "method";
+
+
+               updateDetail.Parameters.Add("p_remark", NpgsqlDbType.Varchar);
+               updateDetail.Parameters["p_remark"].SourceColumn = "remark";
+
+
+               NpgsqlCommand deleteDetail = new NpgsqlCommand(
+                       @"delete from ecmtp_parameter
+                  where ecmtp_parameter_rec_id = :p_ecmtp_parameter_rec_id", 
c);
+
+               deleteDetail.Parameters.Add("p_ecmtp_parameter_rec_id",
+NpgsqlDbType.Varchar);
+               
deleteDetail.Parameters["p_ecmtp_parameter_rec_id"].SourceColumn =
+"ecmtp_parameter_rec_id";
+
+               da.DeleteCommand = deleteDetail;
+               da.UpdateCommand = updateDetail;
+               da.InsertCommand = insertDetail;
+
+
+               if (dts[1] != null)
+                       da.Update(dts[1]);
+
+
+               tx.Commit();
+
+       }
+       catch (NpgsqlException ex)
+       {
+               tx.Rollback();
+               throw new Exception(ex.Message + "\n" + ex.StackTrace);
+       }
+
+}
_______________________________________________
mono-bugs maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-bugs

Reply via email to