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); }
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(); }
public ReturnValue resetContent(double id) { ReturnValue info = new ReturnValue(); info = ColumnClass.resetContentUrl(id); return(info); }
/// <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 }
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); } }
public ReturnValue resetColumn(double id) { ReturnValue info = new ReturnValue(); ColumnClass.reset(id); string childId = ColumnClass.getChildId(id); info.userData = childId; return(info); }
/// <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 } }
public ReturnValue columnDel(double classId) { try { ColumnClass.del(classId, loginInfo.value); return(ReturnValue.Success(null)); } catch (Exception e) { return(ReturnValue.Err(e.Message)); }; }
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); }
/// <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); }
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); }
// 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); }
// カラムに値を代入 // 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); }
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); }
public ReturnValue columnMove(double id, double moduleId, double classId) { ReturnValue err = ColumnClass.move(id, moduleId, classId, loginInfo.value); return(err); }
private void AddColumnADOX( string tableName, ColumnClass columnClass, ADOX.DataTypeEnum columnType, int columnDefSize) { m_catalogADOX.Tables[tableName].Columns.Append(columnClass, columnType, columnDefSize); }
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); } }
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(); }
/// <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); }
//Реструктуризация БД по схеме 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; }
private void AddColumnADOX(string tableName, ColumnClass columnClass, ADOX.DataTypeEnum columnType, int columnDefSize) { m_catalogADOX.Tables[tableName].Columns.Append(columnClass, columnType, columnDefSize); }
//Реструктуризация БД по схеме 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); }
//Создаем новую пустую БД из схемы 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(); } } }
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); }
//Создаем новую пустую БД из схемы 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(); } }