public ReturnValue columnInfo(double id)
        {
            ReturnValue err  = new ReturnValue();
            ColumnInfo  info = ColumnClass.get(id);

            if (info == null)
            {
                err.errNo  = -1;
                err.errMsg = "没有找到指定id数据";
            }
            else
            {
                Permissions p = this.loginInfo.value.getColumnPermissions(info.id);
                if (p.read)
                {
                    err.userData = info;
                }
                else
                {
                    err.errNo  = -1;
                    err.errMsg = "没有查看该栏目的权限";
                }
            }
            return(err);
        }
Esempio n. 2
0
        private void ColumnsGen(int colNewBalls)
        {
            selectMarksTable.Rows.Clear();
            selectMarksTable.Columns.Clear();

            selectMarksTable.AllowUserToAddRows = false;

            for (int i = 0; i < colNewBalls; i++)
            {
                ColumnClass columnFor = new ColumnClass();

                columnFor.ball[1].DefaultCellStyle.BackColor = (i % 2 == 0 && type == true ? Color.FromArgb(0, 159, 7) : Color.LimeGreen);

                if (!type)
                {
                    selectMarksTable.Columns.Add(columnFor.ball[1]);
                    selectMarksTable.Columns.Add(columnFor.weight[0]);
                }
                else
                {
                    selectMarksTable.Columns.Add(columnFor.ball[1]);
                }
            }

            ColumnClass column = new ColumnClass();

            selectMarksTable.Columns.Add(column.ballSr[1]);
            selectMarksTable.Columns.Add(column.ballSr[2]);
            selectMarksTable.Columns.Add(column.ballSr[3]);
        }
        public ReturnValue editDirName(double id, string dirName)
        {
            ReturnValue info = new ReturnValue();

            info = ColumnClass.editDirName(id, dirName, this.loginInfo.value);
            return(info);
        }
    /// <summary>
    /// This method is called once, before rows begin to be processed in the data flow.
    ///
    /// You can remove this method if you don't need to do anything here.
    /// </summary>
    public override void PreExecute()
    {
        base.PreExecute();

        /*
         * Add your code here
         */
        textWriter = new StreamWriter(destination, this.Variables.varIsAppendMode, TextEncoding);

        ColumnCount     = ComponentMetaData.InputCollection[0].InputColumnCollection.Count;
        LastColumnIndex = (ColumnCount - 1);
        ColumnNameArray = new ColumnClass[ColumnCount];
        int[] ColumnIndexes = GetColumnIndexes(ComponentMetaData.InputCollection[0].ID); // Same as InputID in ProcessInput
        int   columnIndex   = 0;

        foreach (IDTSInputColumn100 item in ComponentMetaData.InputCollection[0].InputColumnCollection)
        {
            ColumnNameArray[columnIndex]       = new ColumnClass();
            ColumnNameArray[columnIndex].Name  = Convert.ToString(item.Name);
            ColumnNameArray[columnIndex].Index = ColumnIndexes[ComponentMetaData.InputCollection[0].InputColumnCollection.GetObjectIndexByID(item.ID)];
            columnIndex++;
        }

        this.WriteHeader();
    }
Esempio n. 5
0
        public ReturnValue resetContent(double id)
        {
            ReturnValue info = new ReturnValue();

            info = ColumnClass.resetContentUrl(id);
            return(info);
        }
Esempio n. 6
0
        /// <summary>
        /// 创建Access库
        /// </summary>
        /// <param name="connectionString"></param>
        /// <param name="accessFileFullpath"></param>
        /// <param name="dts"></param>
        public static void CreateDataBase(string connectionString, string accessFileFullpath, DataFieldTypeCollection dts)
        {
            CatalogClass cat = null;

            try
            {
                cat = new CatalogClass();
                cat.Create(connectionString);
            }
            catch (Exception ex)
            {
                throw new Exception($"创建Access数据库失败,路径[{accessFileFullpath}],异常信息:[{ex.Message}]");
            }


            #region 新建表
            try
            {
                TableClass tbl = new TableClass();
                tbl.ParentCatalog = cat;
                tbl.Name          = "mytable";

                foreach (DataFieldType dt in dts)
                {
                    //增加一个文本字段
                    ColumnClass col2 = new ColumnClass();
                    col2.ParentCatalog = cat;
                    col2.Name          = dt.FiledName;
                    col2.Properties["Jet OLEDB:Allow Zero Length"].Value = true;
                    switch (dt.Type.ToLower())
                    {
                    case "string":
                        col2.Type = ADOX.DataTypeEnum.adLongVarWChar;
                        tbl.Columns.Append(col2, ADOX.DataTypeEnum.adLongVarWChar, 16);
                        break;

                    case "datetime":
                        tbl.Columns.Append(col2, ADOX.DataTypeEnum.adDate, dt.Length);
                        break;

                    case "int":
                        tbl.Columns.Append(col2, ADOX.DataTypeEnum.adInteger, dt.Length);
                        break;
                    }
                }
                //把表加入数据库(非常重要)
                cat.Tables.Append(tbl);

                //转换为ADO连接,并关闭
                (cat.ActiveConnection as ADODB.Connection).Close();
                cat.ActiveConnection = null;
                cat = null;
            }
            catch (Exception ex)
            {
                throw new Exception($"创建Access数据库表失败,路径[{accessFileFullpath}],异常信息:[{ex.Message}]");
            }
            #endregion
        }
Esempio n. 7
0
        private void ALTERColumnADOX(ConnectionClass conn, string tableName, string columnName, ADOX.DataTypeEnum columnType, int columnPrecision, int columnDefSize, jcolumns cols)
        {
            //НЕ РАБОТАЕТ!!! ADOX c Jet 4.0 непозволяет изменять параметры колонок
            //m_catalogADOX.Tables[tableName].Columns[columnName].Precision = col_prec;
            //m_catalogADOX.Tables[tableName].Columns.Refresh();

            //string strSQL = "ALTER TABLE "+tableName+" ALTER COLUMN "+columnName+" XXX";

            try
            {
                string tempColumnName = String.Format("x{0}", columnName);
                m_catalogADOX.Tables[tableName].Columns[columnName].Name = tempColumnName;
                m_catalogADOX.Tables[tableName].Columns.Refresh();

                ColumnClass columnADOX = new ColumnClass();

                columnADOX.ParentCatalog = m_catalogADOX;

                columnADOX.Name        = columnName;
                columnADOX.Type        = columnType;
                columnADOX.DefinedSize = columnDefSize;
                columnADOX.Precision   = columnPrecision;
                columnADOX.Properties["Autoincrement"].Value = (object)cols.autoincrement;
                columnADOX.Properties["Nullable"].Value      = (object)cols.nullable;
                columnADOX.Properties["Fixed Length"].Value  = (object)cols.fixedLength;

                AddColumnADOX(tableName, columnADOX, columnType, columnDefSize);

                string strSQL = String.Format("UPDATE {0} SET {1} = {2}", tableName, columnName, tempColumnName);

                int    adCmdText = 1;
                object recCount  = new object();
                conn.Execute(strSQL, out recCount, adCmdText);

                //проверка не является ли поле ключевым
                //m_catalogADOX.Tables[tableName].Keys.Refresh();
                for (int i = 0; i < m_catalogADOX.Tables[tableName].Keys.Count; i++)
                {
                    ADOX.Key keyADOX = m_catalogADOX.Tables[tableName].Keys[i];
                    for (int j = 0; j < keyADOX.Columns.Count; j++)
                    {
                        if (tempColumnName == keyADOX.Columns[j].Name)
                        {
                            m_catalogADOX.Tables[tableName].Keys.Delete(keyADOX.Name);
                            m_catalogADOX.Tables[tableName].Keys.Refresh();
                        }
                    }
                }

                m_catalogADOX.Tables[tableName].Columns.Delete(tempColumnName);
                m_catalogADOX.Tables[tableName].Columns.Refresh();
            }
            catch (Exception ex)
            {
                System.Windows.Forms.MessageBox.Show(ex.Message);
            }
        }
Esempio n. 8
0
        public ReturnValue resetColumn(double id)
        {
            ReturnValue info = new ReturnValue();

            ColumnClass.reset(id);
            string childId = ColumnClass.getChildId(id);

            info.userData = childId;
            return(info);
        }
Esempio n. 9
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="catalog"></param>
        /// <param name="srcTable"></param>
        internal void CreateTable(
            Catalog catalog,
            DataTable srcTable)
        {
            string tableName = Sanitize(srcTable.TableName);
            Table  newTable  = new TableClass();

            newTable.Name = tableName;
            catalog.Tables.Append(newTable);

            // ArrayList keySet = new ArrayList();

            foreach (DataColumn srcColumn in srcTable.Columns)
            {
                Column column = new ColumnClass();

                column.Name          = Sanitize(srcColumn.ColumnName);
                column.Type          = TypeFor(srcColumn);
                column.DefinedSize   = SizeFor(srcColumn);
                column.ParentCatalog = catalog;

                if (srcColumn.AllowDBNull)
                {
                    column.Attributes = ColumnAttributesEnum.adColNullable;
                }

                LookupTable(catalog, srcTable).Columns.Append(
                    column,
                    DataTypeEnum.adVarWChar, // default
                    0);                      // default
            }

            if (srcTable.PrimaryKey.Length > 0)
            {
                Key key = new KeyClass();
                key.Name         = Sanitize(String.Format("{0}", tableName));
                key.Type         = KeyTypeEnum.adKeyPrimary;
                key.RelatedTable = tableName;
                foreach (DataColumn srcColumn in srcTable.PrimaryKey)
                {
                    Column column = LookupColumn(catalog, srcColumn);
                    key.Columns.Append(
                        column.Name,
                        DataTypeEnum.adVarWChar,    // default
                        0);                         // default
                }

                LookupTable(catalog, srcTable).Keys.Append(
                    key,
                    KeyTypeEnum.adKeyPrimary,         // default
                    Type.Missing,                     // default
                    String.Empty,                     // default
                    String.Empty);                    // default
            }
        }
Esempio n. 10
0
 public ReturnValue columnDel(double classId)
 {
     try
     {
         ColumnClass.del(classId, loginInfo.value);
         return(ReturnValue.Success(null));
     } catch (Exception e)
     {
         return(ReturnValue.Err(e.Message));
     };
 }
Esempio n. 11
0
        public ReturnValue columnEdit(double classId, double moduleId, string maxIco, double skinId, double contentSkinId, double _skinId, double _contentSkinId, string className, string dirName, int type, double saveDataType, string custom, int watermark, int thumbnailWidth = 0, int thumbnailHeight = 0, int thumbnailForce = 0, double id = 0, int saveRemoteImages = 0, int inherit = 0, string _domainName = "", string domainName = "", string keyword = "", string info = "", int titleRepeat = 0)
        {
            ColumnInfo columnInfo = new ColumnInfo();

            columnInfo.id             = id;
            columnInfo.className      = className;
            columnInfo.classId        = classId;
            columnInfo.moduleId       = moduleId;
            columnInfo.dirName        = dirName;
            columnInfo.keyword        = keyword;
            columnInfo.maxIco         = maxIco;
            columnInfo.saveDataType   = saveDataType;
            columnInfo.skinId         = skinId;
            columnInfo.contentSkinId  = contentSkinId;
            columnInfo._skinId        = _skinId;
            columnInfo._contentSkinId = _contentSkinId;
            columnInfo.info           = info;
            columnInfo.watermark      = watermark;

            columnInfo.custom = custom;

            columnInfo.thumbnailWidth   = thumbnailWidth;
            columnInfo.thumbnailHeight  = thumbnailHeight;
            columnInfo.thumbnailForce   = thumbnailForce;
            columnInfo.saveRemoteImages = saveRemoteImages;
            columnInfo.inherit          = inherit;
            columnInfo.domainName       = domainName;
            columnInfo._domainName      = _domainName;

            columnInfo.titleRepeat = titleRepeat;
            ReturnValue err = new ReturnValue();
            Permissions p   = null;

            if (columnInfo.classId == 7)
            {
                p = loginInfo.value.getModulePermissions(columnInfo.moduleId);//获取上线栏目权限
            }
            else
            {
                ColumnInfo parentColumn = ColumnClass.get(columnInfo.classId);
                columnInfo.rootId = parentColumn.rootId;
                p = this.loginInfo.value.getColumnPermissions(parentColumn);//获取上线栏目权限
            }
            if (!p.all)
            {
                err.errNo  = -1;
                err.errMsg = "没有编辑该栏目的权限";
                return(err);
            }
            ColumnClass.edit(columnInfo, this.loginInfo.value);
            Config.loadDomain();
            return(err);
        }
Esempio n. 12
0
        /// <summary>
        /// 保存模板
        /// </summary>
        public void Save()
        {
            if (TemplateType == TemplateType.自定义页 && this.CustomPageExist())
            {
                throw new Exception("页面“" + this.TemplateName + "”已存在请不要重复创建");
            }


            Dictionary <string, object> fields = new Dictionary <string, object>();

            fields["id"]               = this.TemplateId;
            fields["title"]            = this.TemplateName;
            fields["u_content"]        = SetContent(this.TemplateContent);
            fields["u_type"]           = (int)this.TemplateType;
            fields["u_defaultFlag"]    = this.IsDefault ? 1 : 0;
            fields["classId"]          = this.ColumnId;
            fields["u_datatypeId"]     = this.DatatypeId;
            fields["u_editboxStatus"]  = (int)this.EditMode;
            fields["u_parameterValue"] = this.ParameterValue;
            fields["u_webFAid"]        = this.IsMobile ? 1 : 0;
            fields["createDate"]       = System.DateTime.Now;
            fields["updateDate"]       = System.DateTime.Now;
            int        u_layer    = 0;
            ModuleInfo moduleInfo = ModuleClass.get(ColumnId);

            if (moduleInfo == null)
            {
                ColumnInfo columnInfo = ColumnClass.get(ColumnId);
                if (columnInfo != null)
                {
                    u_layer       = 2;
                    fields["url"] = @"/" + columnInfo.dirName + "/" + TemplateName;
                }
                else
                {
                    fields["url"] = @"/" + TemplateName;
                }
            }
            else
            {
                u_layer = 1;
                if (moduleInfo.type)
                {
                    fields["url"] = @"/" + moduleInfo.dirName + "/" + TemplateName;
                }
            }
            fields["u_layer"] = u_layer;
            this.TemplateId   = Save(fields);
            Build(true);
        }
Esempio n. 13
0
        public ReturnValue templateList(double classId, int type, int isMobile)
        {
            ColumnInfo  info = ColumnClass.get(classId);
            ReturnValue err  = new ReturnValue();

            if (info != null)
            {
                err.userData = info.getTemplateList(type, isMobile == 1);
            }
            else
            {
                err.errNo  = -1;
                err.errMsg = "栏目不存在";
            }
            return(err);
        }
Esempio n. 14
0
        // valがcolumnの値として有効かどうかをチェックする
        // valの型チェック(論理的な値チェックは行わない)
        virtual public bool IsValidColumnValue(Row row, string column, object val)
        {
            ColumnClass col = this.Column(column);

            if (val == null || (val is string && (val as string).Length == 0))
            {
                return(true);
            }

            if (col.Type == ColumnType.TypeBool)
            {
                return(val is bool?);
            }
            else if (col.Type == ColumnType.TypeDate)
            {
                if (val is string)
                {
                    return(helper.Converter.IsDateStr(val as string));
                }
                else if (val is DateTime?)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            else if (col.Type == ColumnType.TypeInt)
            {
                return(helper.Converter.ObjToLongObj(val) != null);
            }
            else if (col.Type == ColumnType.TypeString)
            {
                return(val is string);
            }
            else if (col.Type == ColumnType.TypeAmount)
            {
                return(helper.Converter.AmountToLongObj(val) != null);
            }
            else if (col.Type == ColumnType.TypeReal)
            {
                return(helper.Converter.ObjToDoubleObj(val) != null);
            }

            return(false);
        }
Esempio n. 15
0
        // カラムに値を代入
        // valが不正な値の場合はfalseを返す
        // valが正当な値の場合はvalを型変換して代入し、trueを返す
        // 型チェックのみ。行全体としての正当性チェックは行わない
        virtual public bool SetColumnValue(Row row, string column, object val)
        {
            if (!IsValidColumnValue(row, column, val))
            {
                //row.Set(column, val);
                return(false);
            }

            if (val == null || (val is string && (val as string).Length == 0))
            {
                row.Set(column, null);
                return(true);
            }

            ColumnClass col = this.Column(column);

            if (col.Type == ColumnType.TypeBool)
            {
                row.Set(column, val as bool?);
            }
            else if (col.Type == ColumnType.TypeDate)
            {
                row.Set(column, helper.Converter.ObjToDateTime(val));
            }
            else if (col.Type == ColumnType.TypeInt)
            {
                row.Set(column, helper.Converter.ObjToLongObj(val));
            }
            else if (col.Type == ColumnType.TypeString)
            {
                row.Set(column, helper.Converter.ObjToString(val));
            }
            else if (col.Type == ColumnType.TypeAmount)
            {
                row.Set(column, helper.Converter.AmountToLongObj(val));
            }
            else if (col.Type == ColumnType.TypeReal)
            {
                row.Set(column, helper.Converter.ObjToDoubleObj(val));
            }

            return(true);
        }
Esempio n. 16
0
        public ReturnValue columnSorting(double classId, string ids, int flag)
        {
            ReturnValue info = new ReturnValue();

            string[] id = ids.Split(',');
            for (int i = 0; i < id.Length; i++)
            {
                Sql.ExecuteNonQuery("update class set orderid=@orderid,classId=@classId   where id=@id",
                                    new MySqlParameter[] {
                    new MySqlParameter("orderid", i),
                    new MySqlParameter("id", double.Parse(id[i])),
                    new MySqlParameter("classId", classId)
                });
            }
            if (flag == 1 && classId > 7)
            {
                ColumnClass.reset(classId);
            }
            return(info);
        }
Esempio n. 17
0
        public ReturnValue columnMove(double id, double moduleId, double classId)
        {
            ReturnValue err = ColumnClass.move(id, moduleId, classId, loginInfo.value);

            return(err);
        }
Esempio n. 18
0
		private void AddColumnADOX( string tableName, ColumnClass columnClass, ADOX.DataTypeEnum columnType, int columnDefSize)
		{
			m_catalogADOX.Tables[tableName].Columns.Append(columnClass, columnType, columnDefSize);
		}
Esempio n. 19
0
		private void ALTERColumnADOX( ConnectionClass conn, string tableName, string columnName, ADOX.DataTypeEnum columnType, int columnPrecision, int columnDefSize, jcolumns cols)
		{
			//НЕ РАБОТАЕТ!!! ADOX c Jet 4.0 непозволяет изменять параметры колонок
			//m_catalogADOX.Tables[tableName].Columns[columnName].Precision = col_prec;
			//m_catalogADOX.Tables[tableName].Columns.Refresh();

			//string strSQL = "ALTER TABLE "+tableName+" ALTER COLUMN "+columnName+" XXX";

			try
			{
				string tempColumnName = String.Format("x{0}",columnName);
				m_catalogADOX.Tables[tableName].Columns[columnName].Name = tempColumnName;
				m_catalogADOX.Tables[tableName].Columns.Refresh();

				ColumnClass columnADOX = new ColumnClass();

				columnADOX.ParentCatalog = m_catalogADOX;

				columnADOX.Name = columnName;
				columnADOX.Type = columnType;
				columnADOX.DefinedSize = columnDefSize;
				columnADOX.Precision = columnPrecision;
				columnADOX.Properties["Autoincrement"].Value = (object)cols.autoincrement;
				columnADOX.Properties["Nullable"].Value = (object)cols.nullable;
				columnADOX.Properties["Fixed Length"].Value = (object)cols.fixedLength;

				AddColumnADOX( tableName, columnADOX, columnType, columnDefSize);

				string strSQL = String.Format("UPDATE {0} SET {1} = {2}",tableName, columnName,tempColumnName);

				int adCmdText = 1;
				object recCount = new object();
				conn.Execute( strSQL, out recCount, adCmdText);

				//проверка не является ли поле ключевым
				//m_catalogADOX.Tables[tableName].Keys.Refresh();
				for (int i = 0; i < m_catalogADOX.Tables[tableName].Keys.Count; i++ )
				{
					ADOX.Key keyADOX = m_catalogADOX.Tables[tableName].Keys[i];
					for (int j = 0; j < keyADOX.Columns.Count; j++ )
					{
						if ( tempColumnName == keyADOX.Columns[j].Name)
						{
							m_catalogADOX.Tables[tableName].Keys.Delete( keyADOX.Name);
							m_catalogADOX.Tables[tableName].Keys.Refresh();
						}
					}
				}
				
				m_catalogADOX.Tables[tableName].Columns.Delete(tempColumnName);
				m_catalogADOX.Tables[tableName].Columns.Refresh();
			}
			catch(Exception ex)
			{
				System.Windows.Forms.MessageBox.Show(ex.Message);
			}
		}
Esempio n. 20
0
 string ParseType(ColumnClass c)
 {
     if(c.DATA_TYPE == "int")
         return c.DATA_TYPE;
     if(c.DATA_TYPE == "nvarchar")
         return c.DATA_TYPE + "(" + c.CHARACTER_MAXIMUM_LENGTH + ")";
     throw new NotImplementedException();
 }
Esempio n. 21
0
        /// <summary>
        /// 向指定Access中添加指定的表格
        /// </summary>
        /// <param name="dbName"></param>
        /// <param name="tbName"></param>
        /// <param name="colums"></param>
        /// <returns></returns>
        public bool createAccessTable(string dbName, string tbName, List <string> colums)
        {
            /*****检查数据库文件是否存在******/
            Catalog catalog = new Catalog();
            string  path    = FilePath + "WorkData\\" + dbName;

            if (!File.Exists(path))
            {
                try
                {
                    catalog.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Jet OLEDB:Engine Type=5");
                }
                catch (System.Exception e)
                {
                    Trace.TraceWarning("创建Access数据库出错");
                    return(false);
                }
            }
            /********连接数据库*********/
            ADODB.Connection connection = new ADODB.Connection();
            try
            {
                connection.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path, null, null, -1);
            }
            catch (System.Exception ex)
            {
                Trace.TraceWarning("Access连接打开失败", ex);
                return(false);
            }
            /********向数据库文件追加表格*********/
            catalog.ActiveConnection = connection;
            Table table = new Table
            {
                ParentCatalog = catalog,
                Name          = tbName
            };

            /*******Table的列名*********/
            //{
            //    colums.Insert(0, "test_time");
            //    colums.Insert(1, "circuit_batches");
            //    colums.Insert(2, "function");
            //    colums.Insert(3, "ins_no");
            //    colums.Insert(4, "fixture_no");
            //    colums.Insert(5, "testos_no");
            //}
            foreach (var column in colums)
            {
                ColumnClass col = new ColumnClass
                {
                    ParentCatalog = catalog,
                    Name          = column,
                    Attributes    = ColumnAttributesEnum.adColNullable  //允许空值
                };
                table.Columns.Append(col, DataTypeEnum.adVarWChar, 50); //默认数据类型和字段大小
            }
            /***测试连接***/
            OleDbConnection accessConnection = new OleDbConnection(connection.ConnectionString);

            if (!accessConnection.TableExists(tbName))
            {
                catalog.Tables.Append(table);                                       //追加表数据
            }
            try
            {
                accessConnection.Open();
            }
            catch (System.Exception ex)
            {
                Trace.TraceWarning("Access连接打开失败", ex);
                return(false);
            }
            accessConnection.Close();
            connection.Close();
            return(true);
        }
Esempio n. 22
0
		//Реструктуризация БД по схеме
		public bool RestructDB( string pathDB)
		{
			if (!m_isSchema)
				return false;
			
			File.Copy( pathDB, pathDB+".old", true);

			bool isRestructed = false;

			ConnectionClass conn = null;
			try
			{
				conn = new ConnectionClass();
				conn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+pathDB,"","",0);
				m_catalogADOX.ActiveConnection = conn;

				for ( int i = 0; i < m_schema.tables.Length; ++i )
				{
					string tableName;
					try
					{
						tableName = m_catalogADOX.Tables[m_schema.tables[i].name].Name;
					}
					catch
					{
						AddTableADOX( m_schema.tables[i].name);
						tableName = m_schema.tables[i].name;
						isRestructed = true;
					}

					jcolumns[] cols = m_schema.tables[i].columns;
					for ( int j = 0; j < cols.Length; ++j )
					{
						string columnName = cols[j].name;
						ADOX.DataTypeEnum columnType = cols[j].type;
						int columnPrecision = cols[j].precision;
						int columnDefSize = cols[j].definedSize;
						
						try
						{
							string temp = m_catalogADOX.Tables[tableName].Columns[columnName].Name;
						}
						catch
						{
							ColumnClass columnADOX = new ColumnClass();

							columnADOX.ParentCatalog = m_catalogADOX;

							columnADOX.Name = columnName;
							columnADOX.Type = columnType;
							columnADOX.DefinedSize = columnDefSize;
							columnADOX.Precision = columnPrecision;
							columnADOX.Properties["Autoincrement"].Value = (object)cols[j].autoincrement;
							columnADOX.Properties["Nullable"].Value = (object)cols[j].nullable;
							columnADOX.Properties["Fixed Length"].Value = (object)cols[j].fixedLength;

							AddColumnADOX( tableName, columnADOX, columnType, columnDefSize);
							isRestructed = true;
						}

						ADOX.DataTypeEnum temp_type = m_catalogADOX.Tables[tableName].Columns[columnName].Type;
						int temp_precision = m_catalogADOX.Tables[tableName].Columns[columnName].Precision;
						int temp_definedSize = m_catalogADOX.Tables[tableName].Columns[columnName].DefinedSize;

						if (columnType != temp_type || columnPrecision != temp_precision || columnDefSize != temp_definedSize
							|| cols[j].autoincrement != (bool)m_catalogADOX.Tables[tableName].Columns[columnName].Properties["Autoincrement"].Value 
							|| cols[j].nullable != (bool)m_catalogADOX.Tables[tableName].Columns[columnName].Properties["Nullable"].Value 
							|| cols[j].fixedLength != (bool)m_catalogADOX.Tables[tableName].Columns[columnName].Properties["Fixed Length"].Value
							)
						{
							ALTERColumnADOX( conn, tableName, columnName, columnType, columnPrecision, columnDefSize, cols[j]);
							isRestructed = true;
						}
					}

					//index
					jindexs[] ind = m_schema.tables[i].indexs;
					if (ind != null)
					{
						for ( int j = 0; j < ind.Length; j++ )
						{
							try
							{
								string name = m_catalogADOX.Tables[m_schema.tables[i].name].Indexes[ind[j].name].Name;
							}
							catch
							{
								IndexClass indexADOX = new IndexClass();
								
								indexADOX.Name = ind[j].name;
								indexADOX.Clustered = ind[j].clustered;
								indexADOX.IndexNulls = ind[j].indexNulls;
								indexADOX.PrimaryKey = ind[j].primaryKey;
								indexADOX.Unique = ind[j].unique;
								indexADOX.Columns.Append(ind[j].name, ADOX.DataTypeEnum.adInteger, 0);
								

								//m_catalogADOX.Tables[m_schema.tables[i].name].Indexes.Refresh();
								try
								{
									m_catalogADOX.Tables[m_schema.tables[i].name].Indexes.Append( ind[j].name, ind[j].name);
								}
								catch{}
								//catch (System.Runtime.InteropServices.COMException e)
								//{
									//System.Windows.Forms.MessageBox.Show(e.Message);
								//}
								isRestructed = true;
							}
						}
					}

					//keys
					jkeys[] key = m_schema.tables[i].keys;
					if (key != null)
					{
						for ( int j = 0; j < key.Length; j++ )
						{
							try
							{
								string name = m_catalogADOX.Tables[m_schema.tables[i].name].Keys[key[j].name].Name;
							}
							catch
							{

								KeyClass keyADOX = new KeyClass();
								keyADOX.Name = key[j].name;
								keyADOX.Type = key[j].type;

								m_catalogADOX.Tables[m_schema.tables[i].name].Keys.Append(
									key[j].name, key[j].type, m_catalogADOX.Tables[m_schema.tables[i].name].Columns[key[j].column], "", "");
									//key[j].name, key[j].type, key[j].column, "", "");

								//Без этой записи на win2000 выдавала глюк!!! Первая строка в vars отказывалась записыватся
								m_catalogADOX.Tables[m_schema.tables[i].name].Keys.Refresh();
							}
						}
					}

					//Data
					jrows[] rows = m_schema.tables[i].rows;
					if (rows != null && m_schema.tables[i].name=="vars")
						FillDataRestruct( conn, m_schema.tables[i].name, rows);
				}
			}
			finally
			{
				if (conn != null)
					conn.Close();
				//System.Runtime.InteropServices.Marshal.ReleaseComObject(m_catalogADOX);
				//m_catalogADOX = new CatalogClass();
			}
			return isRestructed;
		}
Esempio n. 23
0
 private void AddColumnADOX(string tableName, ColumnClass columnClass, ADOX.DataTypeEnum columnType, int columnDefSize)
 {
     m_catalogADOX.Tables[tableName].Columns.Append(columnClass, columnType, columnDefSize);
 }
Esempio n. 24
0
        //Реструктуризация БД по схеме
        public bool RestructDB(string pathDB)
        {
            if (!m_isSchema)
            {
                return(false);
            }

            File.Copy(pathDB, pathDB + ".old", true);

            bool isRestructed = false;

            ConnectionClass conn = null;

            try
            {
                conn = new ConnectionClass();
                conn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathDB, "", "", 0);
                m_catalogADOX.ActiveConnection = conn;

                for (int i = 0; i < m_schema.tables.Length; ++i)
                {
                    string tableName;
                    try
                    {
                        tableName = m_catalogADOX.Tables[m_schema.tables[i].name].Name;
                    }
                    catch
                    {
                        AddTableADOX(m_schema.tables[i].name);
                        tableName    = m_schema.tables[i].name;
                        isRestructed = true;
                    }

                    jcolumns[] cols = m_schema.tables[i].columns;
                    for (int j = 0; j < cols.Length; ++j)
                    {
                        string            columnName = cols[j].name;
                        ADOX.DataTypeEnum columnType = cols[j].type;
                        int columnPrecision          = cols[j].precision;
                        int columnDefSize            = cols[j].definedSize;

                        try
                        {
                            string temp = m_catalogADOX.Tables[tableName].Columns[columnName].Name;
                        }
                        catch
                        {
                            ColumnClass columnADOX = new ColumnClass();

                            columnADOX.ParentCatalog = m_catalogADOX;

                            columnADOX.Name        = columnName;
                            columnADOX.Type        = columnType;
                            columnADOX.DefinedSize = columnDefSize;
                            columnADOX.Precision   = columnPrecision;
                            columnADOX.Properties["Autoincrement"].Value = (object)cols[j].autoincrement;
                            columnADOX.Properties["Nullable"].Value      = (object)cols[j].nullable;
                            columnADOX.Properties["Fixed Length"].Value  = (object)cols[j].fixedLength;

                            AddColumnADOX(tableName, columnADOX, columnType, columnDefSize);
                            isRestructed = true;
                        }

                        ADOX.DataTypeEnum temp_type = m_catalogADOX.Tables[tableName].Columns[columnName].Type;
                        int temp_precision          = m_catalogADOX.Tables[tableName].Columns[columnName].Precision;
                        int temp_definedSize        = m_catalogADOX.Tables[tableName].Columns[columnName].DefinedSize;

                        if (columnType != temp_type || columnPrecision != temp_precision || columnDefSize != temp_definedSize ||
                            cols[j].autoincrement != (bool)m_catalogADOX.Tables[tableName].Columns[columnName].Properties["Autoincrement"].Value ||
                            cols[j].nullable != (bool)m_catalogADOX.Tables[tableName].Columns[columnName].Properties["Nullable"].Value ||
                            cols[j].fixedLength != (bool)m_catalogADOX.Tables[tableName].Columns[columnName].Properties["Fixed Length"].Value
                            )
                        {
                            ALTERColumnADOX(conn, tableName, columnName, columnType, columnPrecision, columnDefSize, cols[j]);
                            isRestructed = true;
                        }
                    }

                    //index
                    jindexs[] ind = m_schema.tables[i].indexs;
                    if (ind != null)
                    {
                        for (int j = 0; j < ind.Length; j++)
                        {
                            try
                            {
                                string name = m_catalogADOX.Tables[m_schema.tables[i].name].Indexes[ind[j].name].Name;
                            }
                            catch
                            {
                                IndexClass indexADOX = new IndexClass();

                                indexADOX.Name       = ind[j].name;
                                indexADOX.Clustered  = ind[j].clustered;
                                indexADOX.IndexNulls = ind[j].indexNulls;
                                indexADOX.PrimaryKey = ind[j].primaryKey;
                                indexADOX.Unique     = ind[j].unique;
                                indexADOX.Columns.Append(ind[j].name, ADOX.DataTypeEnum.adInteger, 0);


                                //m_catalogADOX.Tables[m_schema.tables[i].name].Indexes.Refresh();
                                try
                                {
                                    m_catalogADOX.Tables[m_schema.tables[i].name].Indexes.Append(ind[j].name, ind[j].name);
                                }
                                catch {}
                                //catch (System.Runtime.InteropServices.COMException e)
                                //{
                                //System.Windows.Forms.MessageBox.Show(e.Message);
                                //}
                                isRestructed = true;
                            }
                        }
                    }

                    //keys
                    jkeys[] key = m_schema.tables[i].keys;
                    if (key != null)
                    {
                        for (int j = 0; j < key.Length; j++)
                        {
                            try
                            {
                                string name = m_catalogADOX.Tables[m_schema.tables[i].name].Keys[key[j].name].Name;
                            }
                            catch
                            {
                                KeyClass keyADOX = new KeyClass();
                                keyADOX.Name = key[j].name;
                                keyADOX.Type = key[j].type;

                                m_catalogADOX.Tables[m_schema.tables[i].name].Keys.Append(
                                    key[j].name, key[j].type, m_catalogADOX.Tables[m_schema.tables[i].name].Columns[key[j].column], "", "");
                                //key[j].name, key[j].type, key[j].column, "", "");

                                //Без этой записи на win2000 выдавала глюк!!! Первая строка в vars отказывалась записыватся
                                m_catalogADOX.Tables[m_schema.tables[i].name].Keys.Refresh();
                            }
                        }
                    }

                    //Data
                    jrows[] rows = m_schema.tables[i].rows;
                    if (rows != null && m_schema.tables[i].name == "vars")
                    {
                        FillDataRestruct(conn, m_schema.tables[i].name, rows);
                    }
                }
            }
            finally
            {
                if (conn != null)
                {
                    conn.Close();
                }
                //System.Runtime.InteropServices.Marshal.ReleaseComObject(m_catalogADOX);
                //m_catalogADOX = new CatalogClass();
            }
            return(isRestructed);
        }
Esempio n. 25
0
        //Создаем новую пустую БД из схемы
        public void CreateDB(string pathDB)
        {
            if (!m_isSchema)
            {
                return;
            }

            if (File.Exists(pathDB))
            {
                File.Copy(pathDB, pathDB + ".old", true);
                File.Delete(pathDB);
            }

            string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathDB;

            try
            {
                m_catalogADOX.Create(connStr);

                for (int i = 0; i < m_schema.tables.Length; i++)
                {
                    TableClass tableADOX = new TableClass();
                    tableADOX.Name          = m_schema.tables[i].name;
                    tableADOX.ParentCatalog = m_catalogADOX;

                    jcolumns[] cols = m_schema.tables[i].columns;
                    for (int j = 0; j < cols.Length; j++)
                    {
                        ColumnClass columnADOX = new ColumnClass();

                        columnADOX.ParentCatalog = m_catalogADOX;

                        columnADOX.Name        = cols[j].name;
                        columnADOX.Type        = cols[j].type;
                        columnADOX.DefinedSize = cols[j].definedSize;
                        columnADOX.Precision   = cols[j].precision;

                        columnADOX.Properties["Autoincrement"].Value = (object)cols[j].autoincrement;
                        columnADOX.Properties["Nullable"].Value      = (object)cols[j].nullable;
                        columnADOX.Properties["Fixed Length"].Value  = (object)cols[j].fixedLength;

                        tableADOX.Columns.Append(columnADOX, cols[j].type, cols[j].definedSize);
                    }

                    m_catalogADOX.Tables.Append(tableADOX);

                    //index
                    jindexs[] ind = m_schema.tables[i].indexs;
                    if (ind != null)
                    {
                        for (int j = 0; j < ind.Length; j++)
                        {
                            IndexClass indexADOX = new IndexClass();
                            indexADOX.Name       = ind[j].name;
                            indexADOX.Clustered  = ind[j].clustered;
                            indexADOX.IndexNulls = ind[j].indexNulls;
                            indexADOX.PrimaryKey = ind[j].primaryKey;
                            indexADOX.Unique     = ind[j].unique;

                            m_catalogADOX.Tables[m_schema.tables[i].name].Indexes.Append(ind[j].name, ind[j].name);
                        }
                    }

                    //key
                    jkeys[] key = m_schema.tables[i].keys;
                    if (key != null)
                    {
                        for (int j = 0; j < key.Length; j++)
                        {
                            KeyClass keyADOX = new KeyClass();
                            keyADOX.Name = key[j].name;
                            keyADOX.Type = key[j].type;
                            //keyADOX.Columns = key[j].column;
                            //keyADOX.Columns.Append(key[j].column, ADOX.DataTypeEnum.adInteger, 0);
                            //ColumnClass columnADOX = new ColumnClass();
                            //columnADOX.Name = key[j].column;

                            m_catalogADOX.Tables[m_schema.tables[i].name].Keys.Append(
                                key[j].name, key[j].type, m_catalogADOX.Tables[m_schema.tables[i].name].Columns[key[j].column], "", "");

                            //Без этой записи на win2000 выдавала глюк!!! Первая строка в vars отказывалась запичыватся
                            m_catalogADOX.Tables[m_schema.tables[i].name].Keys.Refresh();
                        }
                    }
                }
            }
            finally
            {
                //if (conn != null)
                //	conn.Close();
                //m_catalogADOX.ActiveConnection = null;
            }

            //Data и
            ConnectionClass conn = null;

            try
            {
                conn = new ConnectionClass();
                conn.Open(connStr, "", "", 0);

                for (int i = 0; i < m_schema.tables.Length; i++)
                {
                    jrows[] rows = m_schema.tables[i].rows;
                    if (rows != null && m_schema.tables[i].name == "vars")
                    {
                        FillDataRestruct(conn, m_schema.tables[i].name, rows);
                    }
                }
            }
            finally
            {
                if (conn != null)
                {
                    conn.Close();
                }
            }
        }
Esempio n. 26
0
        public ReturnValue addColumn(double moduleId, double classId, double dataTypeId, string list)
        {
            ReturnValue errinfo = new ReturnValue();
            Permissions p       = null;

            if (classId < 8)
            {
                classId = 7;
                p       = loginInfo.value.getModulePermissions(moduleId);
            }
            else
            {
                p = loginInfo.value.getColumnPermissions(classId);
            }
            if (!p.all)
            {
                errinfo.errNo  = -1;
                errinfo.errMsg = "没有编辑该栏目的权限";
                return(errinfo);
            }
            string [] _list = list.Split('\n');
            string    msg   = "";

            double[] parentid = new double[] { classId, -1, -1, -1, -1, -1, -1 };
            for (int i = 0; i < _list.Length; i++)
            {
                if (_list[i].Trim() != "")
                {
                    int layer = Regex.Split(_list[i], "  ").Length - 1;
                    classId = parentid[layer];
                    string[] temp = _list[i].Trim().Split('\t');
                    string   classname = temp[0].Trim(), dirname = "", keyword = "";
                    if (temp.Length > 1)
                    {
                        dirname = temp[1];
                    }
                    else
                    {
                        dirname = classname.GetPinYin();
                        if (dirname.Length > 15)
                        {
                            dirname = classname.GetPinYin('2');
                        }
                        dirname = Regex.Replace(dirname, "[ " + @"\-_" + "`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{}【】‘;:”“'。,、?]", "");
                    }
                    if (temp.Length > 2)
                    {
                        keyword = temp[2];
                    }
                    ColumnInfo info = new ColumnInfo();
                    info.className = classname;
                    info.classId   = classId;
                    info.keyword   = keyword;
                    if (classId != 7)
                    {
                        ColumnInfo parent = ColumnClass.get(classId);
                        if (parent != null)
                        {
                            info.rootId = parent.rootId;
                        }
                    }
                    info.moduleId     = moduleId;
                    info.dirName      = dirname;
                    info.saveDataType = dataTypeId;
                    ReturnValue err = new ReturnValue();
                    if (classId < 1)
                    {
                        err.errNo  = -1;
                        err.errMsg = "上级栏目不存在";
                    }
                    else
                    {
                        ColumnClass.edit(info, loginInfo.value);
                    }
                    if (err.errNo > -1)
                    {
                        double newId = Convert.ToDouble(err.userData);
                        if (newId > 0)
                        {
                            parentid[layer + 1] = newId;
                        }
                    }
                    else
                    {
                        msg += "[" + classname + "]";
                        //errinfo.errNo = -1;
                        //errinfo.errMsg += classname+"添加失败 "+err.errMsg + "<br>";
                    }
                }
            }
            errinfo.userData = msg;
            return(errinfo);
        }
Esempio n. 27
0
		//Создаем новую пустую БД из схемы
		public void CreateDB( string pathDB)
		{
			if (!m_isSchema)
				return;

			if (File.Exists(pathDB))
			{
				File.Copy( pathDB, pathDB+".old", true);
				File.Delete( pathDB);
			}

			string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+pathDB;
			try
			{
				m_catalogADOX.Create(connStr);

				for ( int i = 0; i < m_schema.tables.Length; i++ )
				{
					TableClass tableADOX = new TableClass();
					tableADOX.Name = m_schema.tables[i].name;
					tableADOX.ParentCatalog = m_catalogADOX;

					jcolumns[] cols = m_schema.tables[i].columns;
					for ( int j = 0; j < cols.Length; j++ )
					{
						ColumnClass columnADOX = new ColumnClass();

						columnADOX.ParentCatalog = m_catalogADOX;

						columnADOX.Name = cols[j].name;
						columnADOX.Type = cols[j].type;
						columnADOX.DefinedSize = cols[j].definedSize;
						columnADOX.Precision = cols[j].precision;

						columnADOX.Properties["Autoincrement"].Value = (object)cols[j].autoincrement;
						columnADOX.Properties["Nullable"].Value = (object)cols[j].nullable;
						columnADOX.Properties["Fixed Length"].Value = (object)cols[j].fixedLength;

						tableADOX.Columns.Append(columnADOX, cols[j].type, cols[j].definedSize);
					}

					m_catalogADOX.Tables.Append(tableADOX);

					//index
					jindexs[] ind = m_schema.tables[i].indexs;
					if (ind != null)
					{
						for ( int j = 0; j < ind.Length; j++ )
						{
							IndexClass indexADOX = new IndexClass();
							indexADOX.Name = ind[j].name;
							indexADOX.Clustered = ind[j].clustered;
							indexADOX.IndexNulls = ind[j].indexNulls;
							indexADOX.PrimaryKey = ind[j].primaryKey;
							indexADOX.Unique = ind[j].unique;

							m_catalogADOX.Tables[m_schema.tables[i].name].Indexes.Append( ind[j].name, ind[j].name);
						}
					}

					//key
					jkeys[] key = m_schema.tables[i].keys;
					if (key != null)
					{
						for ( int j = 0; j < key.Length; j++ )
						{
							KeyClass keyADOX = new KeyClass();
							keyADOX.Name = key[j].name;
							keyADOX.Type = key[j].type;
							//keyADOX.Columns = key[j].column;
							//keyADOX.Columns.Append(key[j].column, ADOX.DataTypeEnum.adInteger, 0);
							//ColumnClass columnADOX = new ColumnClass();
							//columnADOX.Name = key[j].column; 

							m_catalogADOX.Tables[m_schema.tables[i].name].Keys.Append(
								key[j].name, key[j].type, m_catalogADOX.Tables[m_schema.tables[i].name].Columns[key[j].column], "", "");

							//Без этой записи на win2000 выдавала глюк!!! Первая строка в vars отказывалась запичыватся
							m_catalogADOX.Tables[m_schema.tables[i].name].Keys.Refresh();
						}
					}
				}
			}
			finally
			{
				//if (conn != null)
				//	conn.Close();
				//m_catalogADOX.ActiveConnection = null;
			}

			//Data и 
			ConnectionClass conn = null;
			try
			{
				conn = new ConnectionClass();
				conn.Open(connStr,"","",0);

				for ( int i = 0; i < m_schema.tables.Length; i++ )
				{

					jrows[] rows = m_schema.tables[i].rows;
					if (rows != null && m_schema.tables[i].name=="vars")
						FillDataRestruct( conn, m_schema.tables[i].name, rows);
				}
			}
			finally
			{
				if (conn != null)
					conn.Close();
			}
		}