Пример #1
0
        public void ComTable(DB.IDB from_db, DB.IDB to_db, out List <string> insert_lis, out List <string> update_lis)
        {
            insert_lis = new List <string>();
            update_lis = new List <string>();
            string sql = "";

            if (sync_type == 0)
            {
                sql = $"select {sel_field2} keys,update_time from {table_name} order by {key_field}";
                DataTable from_tb = from_db.ExecuteToTable(sql);
                Dictionary <string, string> to_dic = to_db.ExecuteToDic <string, string>(sql, "keys", "update_time");

                foreach (DataRow dr in from_tb.Rows)
                {
                    string   key         = dr["keys"].ToString();
                    DateTime update_time = dr["update_time"].ToDateTime();

                    if (to_dic.TryGetValue(key, out string dt))
                    {
                        //比较时间
                        if (dt.ToDateTime() != update_time)
                        {
                            update_lis.Add(key);
                        }
                    }
                    else
                    {
                        insert_lis.Add(key);
                    }
                }
            }
            else if (sync_type == 1)
            {
                sql = $"select {sel_field2} keys from {table_name} order by {key_field}";
                DataTable from_tb = from_db.ExecuteToTable(sql);
                foreach (DataRow dr in from_tb.Rows)
                {
                    string key = dr["keys"].ToString();

                    insert_lis.Add(key);
                }
                to_db.ExecuteScalar($"delete from {table_name}");
            }
            else if (sync_type == 2)
            {
                sql = $"select  {sel_field2} keys from {table_name} order by {key_field}";
                DataTable        from_tb = from_db.ExecuteToTable(sql);
                List <string>    to_lis  = to_db.ExecuteToList <string>(sql, "keys");
                HashSet <string> to_hs   = new HashSet <string>(to_lis);
                foreach (DataRow dr in from_tb.Rows)
                {
                    string key = dr["keys"].ToString();

                    if (!to_hs.Contains(key))
                    {
                        insert_lis.Add(key);
                    }
                }
            }
        }