📄 step3.aspx.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 + " <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 + " <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 + -