⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 step3.aspx.cs

📁 最好用的站点内容管理系统 全部源代码都有
💻 CS
字号:
//======================================================
//==     (c)2008 aspxcms.com by NeTCMS v1.0              ==
//==          Forum:bbs.aspxcms.com                   ==
//==         Website:www.aspxcms.com                  ==
//======================================================
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Text.RegularExpressions;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Reflection;
using System.IO;

namespace NetCMS.Web.Install
{
    public partial class step3 : System.Web.UI.Page
    {
        private string sitedir = null;
        protected void Page_Load(object sender, EventArgs e)
        {
            Response.CacheControl = "no-cache";
            sitedir = Server.MapPath("~");
            Page.Server.ScriptTimeout = 1000;
            string GetSet = Request.QueryString["set"];
            if (GetSet != null && GetSet != string.Empty)
            {
                StartInstall_Click();
            }
            if (!Page.IsPostBack)
                getConnstrInfo();
        }

        protected void StartInstall_Click()
        {
            string s_DbType = Request.QueryString["DbType"];
            string s_datasource = Request.QueryString["datasource"];
            string s_initialcatalog = Request.QueryString["initialcatalog"];
            string s_userid = Request.QueryString["userid"];
            string s_password = Request.QueryString["password"];
            string s_tableprefix = Request.QueryString["gtableprefix"];

            string ResultStr = setWebConfig(s_datasource, s_userid, s_password, s_initialcatalog, s_tableprefix);
            if (ResultStr != "0")
            {
                Response.Write(ResultStr + "&nbsp; &nbsp; <a href=\"javascript:closediv();self.location='step3.aspx';\"> <span style=\"color:Blue\">重新操作</span>");
                Response.End();
            }
            ResultStr = CreateDataBase(s_datasource, s_userid, s_password, s_initialcatalog, s_tableprefix);
            if (ResultStr != "0")
            {
                Response.Write("" + ResultStr + " &nbsp; &nbsp; <a href=\"javascript:closediv();self.location='step3.aspx';\"><span style=\"color:Blue\">重新操作</span>");
                Response.End();
            }
            else
            {
                ResultStr = "<span style=\"font-weight:bold;font-size:16px;color:Green;\">恭喜!操作成功!</span><a href=\"step4.aspx?Dbname=" + NetCMS.Common.Input.URLEncode(s_initialcatalog) + "\"><span style=\"color:blue\">进行下一步操作</span>";
            }
            Response.Write(ResultStr);
            Response.End();
        }

        /// <summary>
        /// 创建数据库
        /// </summary>
        /// <param name="server">数据库服务器地址</param>
        /// <param name="user">数据库用户名</param>
        /// <param name="pwd">数据库用户密码</param>
        /// <param name="dbname">要创建的数据库名称</param>
        /// <param name="tbpre">数据库表前缀</param>
        /// <param name="adminname">管理员帐号</param>
        /// <param name="adminpwd">管理员密码</param>
        protected string CreateDataBase(string server, string user, string pwd, string dbname, string tbpre)
        {
            string GetResultStr = "0";
            string s_dbsqlpath = sitedir.TrimEnd('\\') + "\\Install\\SQL\\CreatData.sql";
            //string s_dbsqlpath1 = sitedir.TrimEnd('\\') + "\\Install\\SQL\\InitialValue.sql";
            try
            {
                if (File.Exists(s_dbsqlpath))
                {
                    replaceTablePre(s_dbsqlpath, dbname, tbpre);
                    //------------------------建立数据库----------------------------
                    string connStr = string.Format("data source={0};user id={1};password={2};persist security info=false;packet size=4096", server, user, pwd);

                    NetCMS.Install.Comm.ExecuteSql(connStr, "master", "IF Not EXISTS (select name from master.dbo.sysdatabases where name = N'" + dbname + "') CREATE DATABASE " + dbname);
                    NetCMS.Install.Comm.ExecuteSql(connStr, "master", "Use [" + dbname + "];");
                    //用osql.exe执行方式
                    //System.Diagnostics.Process sqlProcess = new System.Diagnostics.Process();
                    //sqlProcess.StartInfo.FileName = "osql.exe";
                    //sqlProcess.StartInfo.Arguments = string.Format(" -U {0} -P {1} -d {2} -i {3}", user, pwd, dbname, s_dbsqlpath);
                    //sqlProcess.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
                    //sqlProcess.Start();
                    //sqlProcess.WaitForExit(); //等待执行
                    //sqlProcess.Close();

                    //用dbhelper执行方式
                    StreamReader sr1 = File.OpenText(s_dbsqlpath);
                    string s_sqlcontent = sr1.ReadToEnd();
                    sr1.Close();
                    NetCMS.Install.Comm.ExecuteSql(connStr, dbname, s_sqlcontent);

                    //执行创建存储过程
                    NetCMS.Install.Comm.ExecuteSql(connStr, dbname, "if exists (select * from sysobjects where id = object_id(N'[" + tbpre + "publish_CHupdateishtml]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) Drop Procedure [" + tbpre + "publish_CHupdateishtml]");
                    NetCMS.Install.Comm.ExecuteSql(connStr, dbname, "if exists (select * from sysobjects where id = object_id(N'[" + tbpre + "publish_updateishtml]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) Drop Procedure [" + tbpre + "publish_updateishtml]");

                    NetCMS.Install.Comm.ExecuteSql(connStr, dbname, "CREATE PROCEDURE [" + tbpre + "publish_CHupdateishtml] @tablename varchar(30),@filedname varchar(30),@idtype varchar(30),@id int AS begin declare @sql varchar(500) set @sql='update '+@tablename +' set '+@filedname+'=1 where '+@idtype+'='+'''+@id+''' exec (@sql) end");
                    NetCMS.Install.Comm.ExecuteSql(connStr, dbname, "CREATE PROCEDURE [" + tbpre + "publish_updateishtml] @tablename varchar(30),@filedname varchar(30),@idtype varchar(30),@newsid varchar(12) AS begin declare @sql varchar(500) set @sql='update '+@tablename +' set '+@filedname+'=1 where '+@idtype+'='+''''+@newsid+'''' exec (@sql) end");

                    //执行创建管理员
                    //string s_adminpwd = NetCMS.Common.Input.MD5(adminpwd, true);
                    //string s_usernum = NetCMS.Common.Rand.Number(12);
                    //string s_Addadmin = "insert into [" + tbpre + "sys_User] ([UserNum],[UserName],[UserPassword],[NickName]," +
                    //                    "[RealName],[isAdmin],[UserGroupNumber],[PassQuestion],[PassKey],[CertType],[CertNumber]," +
                    //                    "[Email],[mobile],[Sex],[birthday],[Userinfo],[UserFace],[userFacesize],[marriage],[iPoint]," +
                    //                    "[gPoint],[cPoint],[ePoint],[aPoint],[isLock],[RegTime],[LastLoginTime],[OnlineTime],[OnlineTF]," +
                    //                    "[LoginNumber],[FriendClass],[LoginLimtNumber],[LastIP],[SiteID],[Addfriend],[isOpen]," +
                    //                    "[ParmConstrNum],[isIDcard],[IDcardFiles],[Addfriendbs],[EmailATF],[EmailCode],[isMobile]," +
                    //                    "[BindTF],[MobileCode]) " +
                    //                    "values " +
                    //                    "('" + s_usernum + "','" + adminname + "','" + s_adminpwd + "','admin'," +
                    //                    "'admin',1,'00000000001','','','','','','12345678901',0,'1986-12-6 00:00:00',''," +
                    //                    "'/sysImages/user/noHeadpic.gif','50|50',0,15,10,2,0,2,0,'" + DateTime.Now + "'," +
                    //                    "'" + DateTime.Now + "',0,0,1,'',0,'127.0.0.1','0',2,0,0,1,'',2,1,'',1,0,'');" +

                    //                    " insert into [" + tbpre + "sys_admin] ([UserNum],[isSuper],[adminGroupNumber],[PopList]," +
                    //                    "[OnlyLogin],[isChannel],[isLock],[SiteID],[isChSupper],[Iplimited],[verCode]) " +
                    //                    "values " +
                    //                    "('" + s_usernum + "',1,'00000001','',0,0,0,'0',0,'','')";

                    //NetCMS.Install.Comm.ExecuteSql(connStr, dbname, s_Addadmin);

                    //执行创建系统默认值
                    //StreamReader sr = File.OpenText(s_dbsqlpath1);
                    //string s_sqldefault= sr.ReadToEnd();
                    //string s_result = Regex.Replace(s_sqldefault, @"\[[Ff][Ss]_", "[" + tbpre, RegexOptions.Compiled);
                    //sr.Close();
                    //NetCMS.Install.Comm.ExecuteSql(connStr, dbname, s_result);
                    //NetCMS.Install.Comm.ExecuteSql(connStr, dbname, "insert into [" + tbpre + "sys_newsIndex] ([TableName],[CreatTime]) values ('" + tbpre + "News','2007-12-12 19:07:27');");
                }
                else
                {
                    GetResultStr = "数据库脚本文件不存在!";
                }
            }
            catch (Exception e)
            {
                GetResultStr = "" + e.Message + "";
            }
            return GetResultStr;
        }

        /// <summary>
        /// 替换数据表前缀以及数据库名称
        /// </summary>
        /// <param name="sqlpath">sql文件路径</param>
        /// <param name="dbname">数据库名称</param>
        /// <param name="tbpre">数据表前缀</param>
        protected void replaceTablePre(string sqlpath, string dbname, string tbpre)
        {
            StreamReader sr = File.OpenText(sqlpath);
            string s_sqlcontent = sr.ReadToEnd();
            sr.Close();
            string s_result = Regex.Replace(s_sqlcontent, @"[Nn][Tt]_", tbpre, RegexOptions.Compiled);
            //s_result = Regex.Replace(s_result, @"NETCMS", dbname, RegexOptions.Compiled);
            File.Delete(sqlpath);

            StreamWriter sw = File.CreateText(sqlpath);
            sw.Write(s_result);
            sw.Close();
        }

        /// <summary>
        /// 设置Web.Config数据库参数
        /// </summary>
        protected string setWebConfig(string server, string user, string pwd, string dbname, string tbpre)
        {
            string ResultStr = "0";
            try
            {
                System.IO.FileInfo FileInfo = new System.IO.FileInfo(sitedir + "/web.config");
                System.Xml.XmlDocument xmlDocument = new System.Xml.XmlDocument();
                xmlDocument.Load(FileInfo.FullName);
                bool FoundIt = false;
                bool FoundIt1 = false;
                foreach (System.Xml.XmlNode Node in xmlDocument["configuration"]["connectionStrings"])
                {
                    if (Node.Name == "add")
                    {
                        Node.Attributes.GetNamedItem("connectionString").Value = String.Format("server={0};uid={1};pwd={2};database={3};", server, user, pwd, dbname);
                        FoundIt = true;
                    }
                }

                foreach (System.Xml.XmlNode Node in xmlDocument["configuration"]["appSettings"])
                {
                    if (Node.Name == "add")
                    {
                        if (Node.Attributes.GetNamedItem("value").Value == "NT_")
                        {
                            Node.Attributes.GetNamedItem("value").Value = String.Format("{0}", tbpre);
                            FoundIt1 = true;
                        }
                    }
                }

                if (FoundIt == false || FoundIt1 == false)
                {
                    ResultStr = "配置Web.Config文件出错!请检查此文件的节点是否与原安装包内此文件节点是否一致";
                }
                xmlDocument.Save(FileInfo.FullName);
            }
            catch (Exception e)
            {
                ResultStr = "" + e.Message + "";
            }
            return ResultStr;
        }

        /// <summary>
        /// 显示错误信息,并中止操作
        /// </summary>
        /// <param name="errinfo">错误信息</param>
        protected void showError(string errinfo)
        {
            Response.Write(errinfo);
            Response.End();
        }

        protected void getConnstrInfo()
        {
            System.IO.FileInfo FileInfo = new System.IO.FileInfo(sitedir + "/web.config");
            System.Xml.XmlDocument xmlDocument = new System.Xml.XmlDocument();
            xmlDocument.Load(FileInfo.FullName);
            string s_Connstr = "server=(local);uid=sa;pwd=sa;database=NETCMS;";
            foreach (System.Xml.XmlNode Node in xmlDocument["configuration"]["connectionStrings"])
            {
                s_Connstr = Node.Attributes.GetNamedItem("connectionString").Value;
            }
            string[] arr_Connstr = s_Connstr.Split(';');

            if (arr_Connstr.Length == 6)
            {
                datasource.Text = getArrOneValue(arr_Connstr[0].Split('=')) + ";" + arr_Connstr[1].ToString();
                initialcatalog.Text = getArrOneValue(arr_Connstr[2].Split('='));
                userid.Text = getArrOneValue(arr_Connstr[3].Split('='));
                password.Text = getArrOneValue(arr_Connstr[4].Split('='));
            }
            else
            {
                datasource.Text = getArrOneValue(arr_Connstr[0].Split('='));
                initialcatalog.Text = getArrOneValue(arr_Connstr[3].Split('='));
                userid.Text = getArrOneValue(arr_Connstr[1].Split('='));
                password.Text = getArrOneValue(arr_Connstr[2].Split('='));
            }
        }


        protected string getArrOneValue(string[] arr_Str)
        {
            string s_TempStr = arr_Str[1].ToString();
            return s_TempStr;
        }

    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -