Esempio n. 1
0
        //执行库体创建
        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
        }
Esempio n. 2
0
        //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
            {
            }
        }