//执行库体创建 private void btn_OK_Click(object sender, EventArgs e) { #region 界面参数输入完整性控制 //cf 20110628 modify: if (sDBFormatID != enumInterDBFormat.FTP.GetHashCode().ToString()) { if (string.IsNullOrEmpty(textRuleFilePath.Text)) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示!", "库体配置文件不能为空!"); return; } } if (sDBFormatID == enumInterDBFormat.ARCGISPDB.GetHashCode().ToString() || sDBFormatID == enumInterDBFormat.ARCGISGDB.GetHashCode().ToString()) { if (string.IsNullOrEmpty(this.txtDataBase.Text)) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示!", "数据库路径不能为空!"); return; } if (string.IsNullOrEmpty(this.txtProjFilePath.Text)) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示!", "空间参考文件不能为空!"); return; } } else if (sDBFormatID == enumInterDBFormat.ARCGISSDE.GetHashCode().ToString()) { if (string.IsNullOrEmpty(this.txtServer.Text)) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示!", "服务器不能为空!"); return; } if (string.IsNullOrEmpty(this.txtUser.Text)) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示!", "用户不能为空!"); return; } if (string.IsNullOrEmpty(this.txtPassWord.Text)) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示!", "密码不能为空!"); return; } if (string.IsNullOrEmpty(this.txtProjFilePath.Text)) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示!", "空间参考文件不能为空!"); return; } } else if (sDBFormatID == enumInterDBFormat.GEOSTARACCESS.GetHashCode().ToString()) { if (string.IsNullOrEmpty(this.txtDataBase.Text)) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示!", "数据库路径不能为空!"); return; } if (string.IsNullOrEmpty(this.txtProjFilePath.Text)) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示!", "空间参考文件不能为空!"); return; } } else if (sDBFormatID == enumInterDBFormat.GEOSTARORACLE.GetHashCode().ToString()) { if (string.IsNullOrEmpty(this.txtProjFilePath.Text)) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示!", "空间参考文件不能为空!"); return; } if (string.IsNullOrEmpty(this.txtDataBase.Text)) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示!", "数据不能为空!"); return; } if (string.IsNullOrEmpty(this.txtUser.Text)) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示!", "用户不能为空!"); return; } if (string.IsNullOrEmpty(this.txtPassWord.Text)) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示!", "密码不能为空!"); return; } } else if (sDBFormatID == enumInterDBFormat.GEOSTARORSQLSERVER.GetHashCode().ToString()) { if (string.IsNullOrEmpty(this.txtProjFilePath.Text)) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示!", "空间参考文件不能为空!"); return; } if (string.IsNullOrEmpty(this.txtServer.Text)) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示!", "服务器不能为空!"); return; } if (string.IsNullOrEmpty(this.txtDataBase.Text)) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示!", "数据不能为空!"); return; } if (string.IsNullOrEmpty(this.txtUser.Text)) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示!", "用户不能为空!"); return; } if (string.IsNullOrEmpty(this.txtPassWord.Text)) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示!", "密码不能为空!"); return; } } else if (sDBFormatID == enumInterDBFormat.ORACLESPATIAL.GetHashCode().ToString()) { if (string.IsNullOrEmpty(this.txtServer.Text)) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示!", "服务器不能为空!"); return; } if (string.IsNullOrEmpty(this.txtUser.Text)) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示!", "用户不能为空!"); return; } if (string.IsNullOrEmpty(this.txtPassWord.Text)) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示!", "密码不能为空!"); return; } } else if (sDBFormatID == enumInterDBFormat.FTP.GetHashCode().ToString()) { if (string.IsNullOrEmpty(this.txtServer.Text)) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示!", "服务器不能为空!"); return; } if (string.IsNullOrEmpty(this.txtUser.Text)) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示!", "用户不能为空!"); return; } if (string.IsNullOrEmpty(this.txtPassWord.Text)) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示!", "密码不能为空!"); return; } } //end #endregion ///////开始库体创建////// //string sDBFeaClsName = string.Empty;/////当前要素集名称 cyf 20110707 modify List <string> sDBClsNameLst = new List <string>();//cyf 20110707 add:数据集名称 Exception ex = null; //cyf 20110622 modify: //int iScale = -1; string iScale = ""; //当前数据集比例尺信息 //end string pAllScale = ""; //所有数据集比例尺信息,比例尺之间以“,”隔开 string pAllDTName = ""; //所有数据集名称信息,名称之间以“,”隔开 this.btn_OK.Enabled = false; this.btn_cancle.Enabled = false; string sMetaConnect = string.Empty;/////成果文件库元信息库连接字符串 //***************************************************** //guozheng 写日志 List <string> Pra = new List <string>(); Pra.Add(sDBName); Pra.Add(sDBType); Pra.Add(sDBFormat); Pra.Add(this.connectInfo); Pra.Add(this.txtProjFilePath.Text); Pra.Add(this.textRuleFilePath.Text); if (ModuleData.v_SysLog != null) { ModuleData.v_SysLog.Write("创建库体", Pra, DateTime.Now); } //***************************************************** //////////////开始创建库体////////////////////// if (sDBTypeID == enumInterDBType.框架要素数据库.GetHashCode().ToString())//////框架要素库 cyf 20110628 { #region 框架要素库创建 clsDBAdd DBCreater = new clsDBAdd(); DBCreater.ProcBar = this.progressBar1; DBCreater.DataBaseOper = this.m_DBOper; //cyf 20110623 delete cyf 20110707 modify DBCreater.DBCreate(sDBFormatID, sDBTypeID, this.txtServer.Text, this.txtservername.Text, this.txtDataBase.Text, txtUser.Text, txtPassWord.Text, this.txtVersion.Text, txtProjFilePath.Text, textRuleFilePath.Text, out iScale, out sDBClsNameLst, out ex); if (ex != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", ex.Message); this.btn_OK.Enabled = true; this.btn_cancle.Enabled = true; return; } //end this.btn_cancle.Enabled = true; #endregion //框架要素库创建完毕后,更新系统维护库信息 DBCreater.UpdateDB(m_CurProNode, iScale, sDBClsNameLst, out pAllScale, out pAllDTName, out ex); //cyf 20110707 modify } else if (sDBTypeID == enumInterDBType.成果文件数据库.GetHashCode().ToString()) /////////成果文件库 cyf 20110628 { #region 成果文件库创建 try { sMetaConnect = "Data Source=" + this.txtServer.Text.Trim() + ";User ID=" + this.txtUser.Text.Trim() + ";Password="******"获取元信息库连接信息失败"); } if (ex != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "库体初始化失败!\n原因:" + ex.Message); this.btn_OK.Enabled = true; this.btn_cancle.Enabled = true; return; } #endregion //更新系统维护库 string sConnectInfo = m_sDBConnectStr + "|Data Source=" + this.txtServer.Text.Trim() + ";User ID=" + this.txtUser.Text.Trim() + ";Password="******"提示", "数据库创建已成功,但界面信息刷新失败!\n原因:" + ex.Message); this.btn_OK.Enabled = true; this.btn_cancle.Enabled = true; return; } else { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "数据库初始化成功!"); } this.Close(); //end #region 原有代码 ////////////创建成功将更新系统维护库信息、刷新界面挂接信息//////// /* * string sConnectInfo = string.Empty; * if (m_DBType == enumInterDBType.框架要素数据库)//////框架要素库在连接信息后增加要素集名称 * { * sConnectInfo = this.txtServer.Text + "|" + this.txtservername.Text + "|" + this.txtDataBase.Text + "|" + this.txtUser.Text + "|" + this.txtPassWord.Text + "|" + this.txtVersion.Text + "|" + sDBFeaClsName; * } * else if (m_DBType == enumInterDBType.成果文件数据库)////成果文件库在连接信息后增加元信息库连接字符串 * { * sConnectInfo = m_sDBConnectStr + "|Data Source=" + this.txtServer.Text.Trim() + ";User ID=" + this.txtUser.Text.Trim() + ";Password="******"|" + this.txtservername.Text + "|" + this.txtDataBase.Text + "|" + this.txtUser.Text + "|" + this.txtPassWord.Text + "|" + this.txtVersion.Text; * } * //cyf 20110603 modify:修改系统维护库读取方式 * long lStateID = -1; * IFeatureWorkspace pFeaWS = ModuleData.TempWks as IFeatureWorkspace; * IQueryDef pQueryDes = pFeaWS.CreateQueryDef(); * pQueryDes.Tables = "DATABASESTATEMD"; * pQueryDes.SubFields = "ID"; * pQueryDes.WhereClause = "DATABASESTATE='库体已初始化'"; * try * { * //查询表格 * ICursor pCursor = pQueryDes.Evaluate(); * if (pCursor == null) * { * SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "数据库状态修改错误"); * this.btn_OK.Enabled = true; * this.btn_cancle.Enabled = true; * return; * } * IRow pRow = pCursor.NextRow(); * if (pRow != null) * { * lStateID = Convert.ToInt64(pRow.get_Value(0)); * } * //释放游标 * System.Runtime.InteropServices.Marshal.ReleaseComObject(pCursor); * } catch { lStateID = -1; } * if (lStateID == -1) * { * SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "数据库状态修改错误"); * this.btn_OK.Enabled = true; * this.btn_cancle.Enabled = true; * return; * } * try///////更新数据库连接信息以及数据库状态ID * { * string sql = "UPDATE DATABASEMD SET CONNECTIONINFO='" + sConnectInfo + "',DATABASSTATEID=" + lStateID.ToString() + ",SCALE=" + iScale+ " WHERE ID=" + lDBid.ToString(); * ModuleData.TempWks.ExecuteSQL(sql); * if (ex != null) * { * SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "数据库连接信息更新失败"); * this.btn_OK.Enabled = true; * this.btn_cancle.Enabled = true; * return; * } * } catch (Exception eError) * { * //**************************************************** * if (ModuleData.v_SysLog != null) * ModuleData.v_SysLog.Write(eError, null, DateTime.Now); * //**************************************************** * SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "数据库连接信息更新失败"); * this.btn_OK.Enabled = true; * this.btn_cancle.Enabled = true; * return; * } */ //long lStateID = -1; //string sql = "SELECT ID FROM DATABASESTATEMD WHERE DATABASESTATE='库体已初始化'"; //try //{ // DataTable gettable = this.m_DBOper.GetSQLTable(sql, out ex); // lStateID = Convert.ToInt64(gettable.Rows[0][0].ToString()); //} //catch { lStateID = -1; } //if (lStateID == -1) //{ // SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "数据库状态修改错误"); // this.btn_OK.Enabled = true; // this.btn_cancle.Enabled = true; // return; //} //try///////更新数据库连接信息以及数据库状态ID //{ // sql = "UPDATE DATABASEMD SET CONNECTIONINFO='" + sConnectInfo + "',DATABASSTATEID=" + lStateID.ToString() + ",SCALE=" + iScale.ToString() + " WHERE ID=" + lDBid.ToString(); // this.m_DBOper.UpdateTable(sql, out ex); // if (ex != null) // { // SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "数据库连接信息更新失败"); // this.btn_OK.Enabled = true; // this.btn_cancle.Enabled = true; // return; // } //} //catch (Exception eError) //{ // //**************************************************** // if (ModuleData.v_SysLog != null) // ModuleData.v_SysLog.Write(eError, null, DateTime.Now); // //**************************************************** // SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "数据库连接信息更新失败"); // this.btn_OK.Enabled = true; // this.btn_cancle.Enabled = true; // return; //} //////////////刷新界面//////////////////////// //clsRefurbishDBinfo ReOper = new clsRefurbishDBinfo(); //ReOper.DBOper = this.m_DBOper; //DevComponents.AdvTree.Node projectNode = null; //ReOper.RefurbishDBinfo(lDBid, out projectNode, out ex); //if (ex != null) //{ // SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "数据库创建已成功,但界面信息刷新失败!\n原因:" + ex.Message); // this.btn_OK.Enabled = true; // this.btn_cancle.Enabled = true; // return; //} //else //{ // SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "数据库初始化成功!"); //} //this.Close(); #endregion }
//cyf 20110602 modify:系统维护库连接方式 public override void OnClick() { //执行卸载数据库操作 //XmlDocument XmlDoc = new XmlDocument(); //string sConnect = string.Empty; string sDBtype = string.Empty; string sDBName = string.Empty; Exception ex = null; long lDBid = -1; #region 原有代码 //if (File.Exists(ModuleData.v_AppDBConectXml)) //{ // XmlDoc.Load(ModuleData.v_AppDBConectXml); // XmlElement ele = XmlDoc.SelectSingleNode(".//系统维护库连接信息") as XmlElement; //if (ele != null) //{ try { //sConnect = ele.GetAttribute("连接字符串"); XmlElement eleinfo = m_Hook.ProjectTree.SelectedNode.Tag as XmlElement; lDBid = Convert.ToInt64(eleinfo.GetAttribute("数据库ID")); sDBtype = eleinfo.GetAttribute("数据库类型"); //cyf 20110626 modify: sDBName = m_Hook.ProjectTree.SelectedNode.Text; // eleinfo.GetAttribute("数据库工程名"); //end } catch { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取数据库信息失败"); return; } //} //else { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取系统维护库连接信息失败"); return; } //} //else //{ // SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "缺失系统维护库连接信息文件:" + ModuleData.v_AppDBConectXml); // return; //} ///// #endregion bool bInLayerTree = ModDBOperate.IsDbSourceInLayerTree(lDBid); //added by chulili 20111118 判断当前图层目录中是否存在该数据源 if (bInLayerTree) { if (!SysCommon.Error.ErrorHandle.ShowFrmInformation("是", "否", "当前图层目录中已引用该数据源,确定卸载数据源:" + sDBName + "?")) { return; } } else { if (!SysCommon.Error.ErrorHandle.ShowFrmInformation("是", "否", "确定卸载数据源:" + sDBName + "?")) { return; } } /////// //clsDBAdd DBdeloper = new clsDBAdd(SysCommon.enumDBConType.ORACLE, SysCommon.enumDBType.ORACLE, sConnect); //cyf 20110602 modify clsDBAdd DBdeloper = new clsDBAdd(); //end ////////执行删除//////////// if (!DBdeloper.DelDB(lDBid, out ex)) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "数据库卸载失败,\n原因:" + ex.Message); return; } m_Hook.ProjectTree.SelectedNode.Remove();//////删除树节点 //cyf 20110627 modify //if (sDBtype == enumInterDBType.成果文件数据库.ToString()) //{ // ///////guozheng added ,若是卸载文件库,将文件库的XMl文件v_FTPCoonectionInfoXML 删除,这一文件会在重新选择文件库工程时会自动生成 // try // { // System.IO.File.Delete(ModuleData.v_FTPCoonectionInfoXML); // } // catch // { // } //} //end /////////刷新界面////////////// /////////////子数据库Combox刷新 //clsRefurbishDBinfo RefOper = new clsRefurbishDBinfo(SysCommon.enumDBConType.ORACLE, SysCommon.enumDBType.ORACLE, sConnect); //cyf 20110602 modify //clsRefurbishDBinfo RefOper = new clsRefurbishDBinfo(); //end //cyf 20110602 delete:界面修改后,没有combobox列表框 //RefOper.UpDataComBox(sDBtype, out ex); //if (ex != null) //{ // SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "数据库卸载成功,界面刷新失败,\n原因:" + ex.Message); // return; //} //else // SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "数据库卸载:" + sDBName + " 成功!"); //end //刷新xml chenyafei 20110222 modify //if (sDBtype != enumInterDBType.成果文件数据库.ToString()) //{ //DeleteXmlNode(sDBtype, lDBid); cyf 20110626 delete:不对工程树图XML做更新 //} ////////////////////按钮处理//////////// if (this.WriteLog) { Plugin.LogTable.Writelog(Caption);//xisheng 2011.07.09 增加日志 } try { ModuleData.v_DataBaseProPanel.RemoveDataBasePro(sDBtype, lDBid); } catch { } }