Click here to Skip to main content
15,896,436 members
Please Sign up or sign in to vote.
4.00/5 (1 vote)
See more:
C#
 public void resetdatasource()
        {
            dt = new DataTable();
            DataColumn col1 = new DataColumn("itemID", typeof(int));
            dt.Columns.Add(col1);
            DataColumn col2 = new DataColumn("paramvalue", typeof(string));
            dt.Columns.Add(col2);
            DataColumn col3 = new DataColumn("date_logged1", typeof(string));
            dt.Columns.Add(col3);
            DataColumn col4 = new DataColumn("Quality", typeof(string));
            dt.Columns.Add(col4);
            DataColumn col5 = new DataColumn("date_logged", typeof(DateTime));
            dt.Columns.Add(col5);
            DataColumn[] Cols = { dt.Columns[0] };
            dt.PrimaryKey = Cols;
            dt.TableName = "parameter";           
        }
  public void enqueue(object e)
        {
            try
            {
                lock (SyncObject)
                {
                    DataChangeEventArgs e113 = (DataChangeEventArgs)e;
                    resetdatasource();
                    for (; i < e113.sts.Length; i++)
                    {
                        int hour113 = e113.sts[i].TimeStampNet.Hour;
                        int minute113 = e113.sts[i].TimeStampNet.Minute;
                        int second113 = e113.sts[i].TimeStampNet.Second;
                        int millisecond113 = e113.sts[i].TimeStampNet.Millisecond;
                        int year113 = e113.sts[i].TimeStampNet.Year;
                        int month113 = e113.sts[i].TimeStampNet.Month;
                        int day113 = e113.sts[i].TimeStampNet.Day;
                        DateTime sdate113 = new DateTime(year113, month113, day113, hour113, minute113, second113, millisecond113);
                       DataRow row1 = dt.NewRow();
                        row1["itemID"] = e113.sts[i].HandleClient;
                  row1["paramvalue"] = Convert.ToString(e113.sts[i].DataValue);
             row1["date_logged1"] = sdate113.ToString("dd-MM-yyyy HH:mm:ss.fff");
                        row1["Quality"] = e113.sts[i].Quality;
                  row1["date_logged"] =DateTime.FromFileTime(e113.sts[i].TimeStamp);
                        dt.Rows.Add(row1);
                 }                         
                update(dt);
               
            }
            catch { }
        }
  public void update(DataTable ds)
         {
             try
             {
                 lock (myLockHolder)
                 {
                     X1 = 1;
                     MySqlConnection con = new MySqlConnection(LocalConnection.GetLocalConnetionStringmysql());
                     MySqlCommand cmd;
                     MySqlDataAdapter da=new MySqlDataAdapter();
                     DataSet oldvalueds=new DataSet();
                     DataTable newupdateddata = new DataTable();
                     newupdateddata = ds.Copy();
                     string query = "";
                     string updatequery = "";
                    query = "select itemID,paramvalue,date_logged1,Quality,date_logged from parameter";
                   
                    updatequery = "update parameter" + Environment.NewLine;
                    updatequery += "set paramvalue=@paramvalue,date_logged1=@date_logged1,Quality=@Quality,date_logged=@date_logged" + Environment.NewLine;
                updatequery += " where itemID=@itemID";
                    da.UpdateCommand = new MySqlCommand(updatequery, con);
da.UpdateCommand.Parameters.Add("@paramvalue", MySqlDbType.VarChar, 250, "paramvalue");
 da.UpdateCommand.Parameters.Add("@date_logged1", MySqlDbType.VarChar, 1000, "date_logged1");
da.UpdateCommand.Parameters.Add("@Quality", MySqlDbType.VarChar, 1000, "Quality");
da.UpdateCommand.Parameters.Add("@date_logged", MySqlDbType.DateTime, 0, "date_logged");
 MySqlParameter workParm = da.UpdateCommand.Parameters.Add("@itemID", MySqlDbType.Int32, 11, "itemID");
                    workParm.SourceColumn = "itemID";
                    workParm.SourceVersion = DataRowVersion.Original;
                     da.MissingSchemaAction = MissingSchemaAction.AddWithKey;
                     cmd = new MySqlCommand(query, con);
                     da = new MySqlDataAdapter(cmd);
                     da.Fill(oldvalueds,"parameter");
                     DataTable dt = new DataTable();
                     dt = oldvalueds.Tables[0].Copy();
                   
                     oldvalueds.Merge(ds);
                     int k = da.Update(oldvalueds, "parameter");     
                 
                  
                 }
             }
             catch { }
             finally
             {
                 X1 = 0;
             }
}

used like this but when i will be merge the two dataset
target.date_logged and source.date_logged have conflicting properties: DataType property mismatch.

target datatype is mysql.data.types.mysqldatetime & source datatype is system.datetime
any solution on this
tankx in advance
Posted
Updated 27-May-11 1:53am
v2

1 solution

Change

da.UpdateCommand.Parameters.Add("@date_logged", MySqlDbType.DateTime, 0, "date_logged");


To

da.UpdateCommand.Parameters.Add("@date_logged", DateTime, 0, "date_logged");


In your connection string add the follow: Convert Zero Datetime=true;Allow Zero Datetime=false

In MySql a datetime column are allowed to have value "0000-00-00 00:00:00". This setting do convert it to DateTime.MinValue.
 
Share this answer
 
Comments
vrushali katkade 28-May-11 0:36am    
1.'System.DateTime' to 'MySql.Data.MySqlClient.MySqlDbType'
2.'MySql.Data.MySqlClient.MySqlParameterCollection.Add(string, MySql.Data.MySqlClient.MySqlDbType, int, string)'
this error are generated into the application in the above line changes
vrushali katkade 28-May-11 0:39am    
please see my comment

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900