コード例 #1
0
        public override global::System.Data.DataSet Clone()
        {
            DataSetTemp cln = ((DataSetTemp)(base.Clone()));

            cln.InitVars();
            cln.SchemaSerializationMode = this.SchemaSerializationMode;
            return(cln);
        }
コード例 #2
0
        public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedDataSetSchema(global::System.Xml.Schema.XmlSchemaSet xs)
        {
            DataSetTemp ds = new DataSetTemp();

            global::System.Xml.Schema.XmlSchemaComplexType type     = new global::System.Xml.Schema.XmlSchemaComplexType();
            global::System.Xml.Schema.XmlSchemaSequence    sequence = new global::System.Xml.Schema.XmlSchemaSequence();
            global::System.Xml.Schema.XmlSchemaAny         any      = new global::System.Xml.Schema.XmlSchemaAny();
            any.Namespace = ds.Namespace;
            sequence.Items.Add(any);
            type.Particle = sequence;
            global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable();
            if (xs.Contains(dsSchema.TargetNamespace))
            {
                global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream();
                global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream();
                try {
                    global::System.Xml.Schema.XmlSchema schema = null;
                    dsSchema.Write(s1);
                    for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext();)
                    {
                        schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current));
                        s2.SetLength(0);
                        schema.Write(s2);
                        if ((s1.Length == s2.Length))
                        {
                            s1.Position = 0;
                            s2.Position = 0;
                            for (; ((s1.Position != s1.Length) &&
                                    (s1.ReadByte() == s2.ReadByte()));)
                            {
                                ;
                            }
                            if ((s1.Position == s1.Length))
                            {
                                return(type);
                            }
                        }
                    }
                }
                finally {
                    if ((s1 != null))
                    {
                        s1.Close();
                    }
                    if ((s2 != null))
                    {
                        s2.Close();
                    }
                }
            }
            xs.Add(dsSchema);
            return(type);
        }
コード例 #3
0
ファイル: MsAccessDBLayer.cs プロジェクト: drme/disks-db
        public DataSetSync GetCategoriesChanges(DateTime timeStamp, long[] pdaCategories)
        {
            /// Flag Values:
            /// 0 - New
            /// 1 - Updated
            /// 2 - Deleted

            try
            {
                string inPart = "";

                if ((null != pdaCategories) && (pdaCategories.Length > 0))
                {
                    inPart += "(" + pdaCategories[0];

                    for (int i = 1; i < pdaCategories.Length; i++)
                    {
                        inPart += ", " + pdaCategories[i];
                    }

                    inPart += ")";
                }

                DataSetSync ds = new DataSetSync();

                string sql = null;

                if (false == string.Empty.Equals(inPart))
                {
                    sql = "SELECT [id], [Name], [Description], [Parent], 1 AS [Flag] FROM [Categories] WHERE DATEDIFF(\"s\",  [LastUpdate], '" + timeStamp.ToString("dd/MM/yyyy hh:mm:ss") + "') < 0";

                    sql += " AND [id] IN " + inPart;

                    DBUtils.FillDataTable(ds.Categories, this.DBConString, sql, new object[] {});
                }

                sql = "SELECT [id], [Name], [Description], [Parent], 0 AS [Flag] FROM [Categories]";

                if (false == string.Empty.Equals(inPart))
                {
                    sql += " WHERE [id] NOT IN " + inPart;
                }

                DBUtils.FillDataTable(ds.Categories, this.DBConString, sql, new object[] {});

                sql = "SELECT [id] FROM [Categories]";

                if (false == string.Empty.Equals(inPart))
                {
                    sql += " WHERE [id] IN " + inPart;
                }

                if ((null != pdaCategories) && (pdaCategories.Length > 0))
                {
                    DataSetTemp dsTemp = new DataSetTemp();

                    DBUtils.FillDataTable(dsTemp.Temp, this.DBConString, sql, new object[] {});

                    foreach (int id in pdaCategories)
                    {
                        if (null == dsTemp.Temp.Rows.Find(id))
                        {
                            DataSetSync.CategoriesRow drDeleted = ds.Categories.NewCategoriesRow();
                            drDeleted.Flag = 2;
                            drDeleted.id = id;
                            ds.Categories.AddCategoriesRow(drDeleted);
                        }
                    }
                }

                return ds;
            }
            catch (OleDbException ex)
            {
                MessageBox.Show(ex.Message);

                return null;
            }
        }
コード例 #4
0
ファイル: MsAccessDBLayer.cs プロジェクト: drme/disks-db
        public void FillChanges(DateTime timeStamp, long[] existingIds, DataTable dtToFill, String fields, String table, long fromId, long toId)
        {
            /// Flag Values:
            /// 0 - New
            /// 1 - Updated
            /// 2 - Deleted

            try
            {
                string inPart = "";

                if ((null != existingIds) && (existingIds.Length > 0))
                {
                    inPart += "(" + existingIds[0];

                    for (int i = 1; i < existingIds.Length; i++)
                    {
                        inPart += ", " + existingIds[i];
                    }

                    inPart += ")";
                }

                string sql = null;

                string idBetween = "[id] >= " + fromId;

                if (toId != -1)
                {
                    idBetween += " AND [id] <= " + toId;
                }

                if (false == string.Empty.Equals(inPart))
                {
                    sql = "SELECT " + fields + ", 1 AS [Flag] FROM " + table + " WHERE " + idBetween + " AND DATEDIFF(\"s\",  [LastUpdate], '" + timeStamp.ToString("dd/MM/yyyy hh:mm:ss") + "') < 0";

                    sql += " AND [id] IN " + inPart;

                    sql += " ORDER BY [id]";

                    DBUtils.FillDataTable(dtToFill, this.DBConString, sql, new object[] {});
                }

                sql = "SELECT " + fields + ", 0 AS [Flag] FROM " + table + " WHERE " + idBetween;

                if (false == string.Empty.Equals(inPart))
                {
                    sql += " AND [id] NOT IN " + inPart;
                }

                sql += " ORDER BY [id]";

                DBUtils.FillDataTable(dtToFill, this.DBConString, sql, new object[] {});

                sql = "SELECT [id] FROM " + table + " WHERE " + idBetween;

                if (false == string.Empty.Equals(inPart))
                {
                    sql += " AND [id] IN " + inPart;
                }

                if ((null != existingIds) && (existingIds.Length > 0))
                {
                    DataSetTemp dsTemp = new DataSetTemp();

                    DBUtils.FillDataTable(dsTemp.Temp, this.DBConString, sql, new object[] {});

                    foreach (int id in existingIds)
                    {
                        if (null == dsTemp.Temp.Rows.Find(id))
                        {
                            DataRow drDeleted = dtToFill.NewRow();
                            drDeleted["Flag"] = 2;
                            drDeleted["id"] = id;
                            dtToFill.Rows.Add(drDeleted);
                        }
                    }
                }
            }
            catch (OleDbException ex)
            {
                MessageBox.Show(ex.Message);
            }
        }