target.date_logged和source.date_logged具有冲突的属性:DataType属性不匹配. [英] target.date_logged and source.date_logged have conflicting properties: DataType property mismatch.

查看:216
本文介绍了target.date_logged和source.date_logged具有冲突的属性:DataType属性不匹配.的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

 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;
             }
}


这样使用,但是当我将两个数据集合并时
target.date_logged和source.date_logged具有冲突的属性:DataType属性不匹配.

目标数据类型是mysql.data.types.mysqldatetime&源数据类型为system.datetime

的任何解决方案 预先tankx


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

推荐答案

更改

Change

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







To

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



在您的连接字符串中添加以下内容:Convert Zero Datetime=true;Allow Zero Datetime=false

在MySql中,datetime列的值可以为"0000-00-00 00:00:00".此设置会将其转换为DateTime.MinValue.



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.


这篇关于target.date_logged和source.date_logged具有冲突的属性:DataType属性不匹配.的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆