using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.IO;
using System.Text;
using System.Xml;
using UUN;

public partial class Install_Step3 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        String 位置 = File.ReadAllText(Server.MapPath("install.txt"), Encoding.UTF8);

        if (位置 != "3")
            if (位置 == "1")
                Response.Redirect("Default.aspx");
            else
                Response.Redirect("Step" + 位置 + ".aspx");

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        String 连接字符串 = "server=" +
            FuWuQiIP.Text +
            ";Integrated Security=false;database=" +
                ShuJuKuMingChen.Text
                + ";uid=" +
                ShuJuKuYongHu.Text
                + ";pwd=" +
                ShuJuKuMiMa.Text;
        SqlConnection 连接;
        try
        {
            连接 = new SqlConnection(连接字符串);
            连接.Open();
            连接.Close();
        }
        catch
        {
            Response.Write("<span style=\"font-size:12px\">数据库连接失败，请检查数据库IP、用户名、密码。<a href=\"javascript:history.back()\">点此返回</a></span>");
            Response.End();
        }

        //设置连接字符串
        File.WriteAllText(Server.MapPath("~/web.config"),
            File.ReadAllText(Server.MapPath("~/web.config")
            , Encoding.UTF8).Replace("@DB@", 连接字符串), Encoding.UTF8);

        连接=new SqlConnection(连接字符串);
        连接.Open();
        //创建数据库
        String[] 字符串数组 = File.ReadAllText(Server.MapPath("SQL"+(Request.Form["dbtype"]=="0"?2005:2000)+".sql"), Encoding.UTF8)
            .Split(new string[] { "\r\nGO\r\n" }, StringSplitOptions.RemoveEmptyEntries);
        SqlCommand 语句;
        for (int i = 0; i < 字符串数组.Length; i++)
        {
            语句 = new SqlCommand(字符串数组[i], 连接);
            语句.ExecuteNonQuery();
        }

        //导入数据
        DataSet 数据 = (DataSet)常用.读取对象(Server.MapPath("~/Install/头像.dat"));
        语句 = new SqlCommand("INSERT INTO [社区_头像]([ID],[头像名称],[头像地址],[头像性别],[需要积分],[创建时间])" +
            "VALUES(@ID,@头像名称,@头像地址,@头像性别,@需要积分,@创建时间)", 连接);
        语句.Parameters.Add("@ID", SqlDbType.Int).Value = 0;
        语句.Parameters.Add("@头像名称", SqlDbType.NVarChar).Value = "";
        语句.Parameters.Add("@头像地址", SqlDbType.NVarChar).Value = "";
        语句.Parameters.Add("@头像性别", SqlDbType.Bit).Value = false;
        语句.Parameters.Add("@需要积分", SqlDbType.Int).Value = 0;
        语句.Parameters.Add("@创建时间", SqlDbType.DateTime).Value = DateTime.Now;
        for (int i = 0; i < 数据.Tables[0].Rows.Count; i++)
        {
            DataRow 行 = 数据.Tables[0].Rows[i];
            语句.Parameters["@ID"].Value = Convert.ToInt32(行["ID"]);
            语句.Parameters["@头像名称"].Value = 行["头像名称"].ToString();
            语句.Parameters["@头像地址"].Value = 行["头像地址"].ToString().Replace("/UUN WAP CMS 3.1", "");
            语句.Parameters["@头像性别"].Value = Convert.ToBoolean(行["头像性别"]);
            语句.Parameters["@需要积分"].Value = Convert.ToInt32(行["需要积分"]);
            语句.Parameters["@创建时间"].Value = Convert.ToDateTime(行["创建时间"]);
            语句.ExecuteNonQuery();
        }

        数据 = (DataSet)常用.读取对象(Server.MapPath("~/Install/勋章.dat"));
        语句 = new SqlCommand("INSERT INTO [社区_勋章]([ID],[勋章名称],[勋章图标],[创建时间])" +
            "VALUES(@ID,@勋章名称,@勋章图标,@创建时间)", 连接);
        语句.Parameters.Add("@ID", SqlDbType.Int).Value = 0;
        语句.Parameters.Add("@勋章名称", SqlDbType.NVarChar).Value = "";
        语句.Parameters.Add("@勋章图标", SqlDbType.NVarChar).Value = "";
        语句.Parameters.Add("@创建时间", SqlDbType.DateTime).Value = DateTime.Now;
        for (int i = 0; i < 数据.Tables[0].Rows.Count; i++)
        {
            DataRow 行 = 数据.Tables[0].Rows[i];
            语句.Parameters["@ID"].Value = Convert.ToInt32(行["ID"]);
            语句.Parameters["@勋章名称"].Value = 行["勋章名称"].ToString();
            语句.Parameters["@勋章图标"].Value = 行["勋章图标"].ToString().Replace("/UUN WAP CMS 3.1", "");
            语句.Parameters["@创建时间"].Value = Convert.ToDateTime(行["创建时间"]);
            语句.ExecuteNonQuery();
        }

        数据 = (DataSet)常用.读取对象(Server.MapPath("~/Install/用户组.dat"));
        语句 = new SqlCommand("INSERT INTO [社区_用户_用户组]([ID],[组名称],[组权限],[用户类型])" +
            "VALUES(@ID,@组名称,@组权限,@用户类型)", 连接);
        语句.Parameters.Add("@ID", SqlDbType.Int).Value = 0;
        语句.Parameters.Add("@组名称", SqlDbType.NVarChar).Value = "";
        语句.Parameters.Add("@组权限", SqlDbType.NVarChar).Value = "";
        语句.Parameters.Add("@用户类型", SqlDbType.NVarChar).Value = "";
        for (int i = 0; i < 数据.Tables[0].Rows.Count; i++)
        {
            DataRow 行 = 数据.Tables[0].Rows[i];
            语句.Parameters["@ID"].Value = Convert.ToInt32(行["ID"]);
            语句.Parameters["@组名称"].Value = 行["组名称"].ToString();
            语句.Parameters["@组权限"].Value = 行["组权限"].ToString();
            语句.Parameters["@用户类型"].Value = 行["用户类型"].ToString();
            语句.ExecuteNonQuery();
        }

        数据 = (DataSet)常用.读取对象(Server.MapPath("~/Install/等级称呼.dat"));
        语句 = new SqlCommand("INSERT INTO [社区_用户_等级称呼]([ID],[等级],[称呼])" +
            "VALUES(@ID,@等级,@称呼)", 连接);
        语句.Parameters.Add("@ID", SqlDbType.Int).Value = 0;
        语句.Parameters.Add("@等级", SqlDbType.Int).Value = 0;
        语句.Parameters.Add("@称呼", SqlDbType.NVarChar).Value = "";
        for (int i = 0; i < 数据.Tables[0].Rows.Count; i++)
        {
            DataRow 行 = 数据.Tables[0].Rows[i];
            语句.Parameters["@ID"].Value = Convert.ToInt32(行["ID"]);
            语句.Parameters["@等级"].Value = Convert.ToInt32(行["等级"]);
            语句.Parameters["@称呼"].Value = 行["称呼"].ToString();
            语句.ExecuteNonQuery();
        }

        数据 = (DataSet)常用.读取对象(Server.MapPath("~/Install/资料结构.dat"));
        语句 = new SqlCommand("INSERT INTO [社区_用户_资料结构]([ID],[数据名称],[数据类型],[最小大小(长度)],[最大大小(长度)],[值列表],[是否注册项],[是否修改资料项],[是否允许重复],[是否资料显示项],[资料显示格式],[默认值],[表单代码],[备注],[表单名称])" +
            "VALUES(@ID,@数据名称,@数据类型,@最小大小_长度,@最大大小_长度,@值列表,@是否注册项,@是否修改资料项,@是否允许重复,@是否资料显示项,@资料显示格式,@默认值,@表单代码,@备注,@表单名称)", 连接);
        语句.Parameters.Add("@ID", SqlDbType.Int).Value = 0;
        语句.Parameters.Add("@数据名称", SqlDbType.NVarChar).Value = "";
        语句.Parameters.Add("@数据类型", SqlDbType.NVarChar).Value = 0;
        语句.Parameters.Add("@最小大小_长度", SqlDbType.Int).Value = 0;
        语句.Parameters.Add("@最大大小_长度", SqlDbType.Int).Value = 0;
        语句.Parameters.Add("@值列表", SqlDbType.NVarChar).Value = "";
        语句.Parameters.Add("@是否注册项", SqlDbType.Bit).Value = false;
        语句.Parameters.Add("@是否修改资料项", SqlDbType.Bit).Value = false;
        语句.Parameters.Add("@是否允许重复", SqlDbType.Bit).Value = false;
        语句.Parameters.Add("@是否资料显示项", SqlDbType.Bit).Value = false;
        语句.Parameters.Add("@资料显示格式", SqlDbType.NVarChar).Value = "";
        语句.Parameters.Add("@默认值", SqlDbType.NVarChar).Value = "";
        语句.Parameters.Add("@表单代码", SqlDbType.NVarChar).Value = "";
        语句.Parameters.Add("@备注", SqlDbType.NVarChar).Value = "";
        语句.Parameters.Add("@表单名称", SqlDbType.NVarChar).Value = "";
        for (int i = 0; i < 数据.Tables[0].Rows.Count; i++)
        {
            DataRow 行 = 数据.Tables[0].Rows[i];
            语句.Parameters["@ID"].Value = Convert.ToInt32(行["ID"]);
            语句.Parameters["@数据名称"].Value = 行["数据名称"].ToString();
            语句.Parameters["@数据类型"].Value = Convert.ToInt32(行["数据类型"]);
            语句.Parameters["@最小大小_长度"].Value = Convert.ToInt32(行["最小大小(长度)"]);
            语句.Parameters["@最大大小_长度"].Value = Convert.ToInt32(行["最大大小(长度)"]);
            语句.Parameters["@值列表"].Value = 行["值列表"].ToString();
            语句.Parameters["@是否注册项"].Value = Convert.ToBoolean(行["是否注册项"]);
            语句.Parameters["@是否修改资料项"].Value = Convert.ToBoolean(行["是否修改资料项"]);
            语句.Parameters["@是否允许重复"].Value = Convert.ToBoolean(行["是否允许重复"]);
            语句.Parameters["@是否资料显示项"].Value = Convert.ToBoolean(行["是否资料显示项"]);
            语句.Parameters["@资料显示格式"].Value = 行["资料显示格式"].ToString();
            语句.Parameters["@默认值"].Value = 行["默认值"].ToString();
            语句.Parameters["@表单代码"].Value = 行["表单代码"].ToString();
            语句.Parameters["@备注"].Value = 行["备注"].ToString();
            语句.Parameters["@表单名称"].Value = 行["表单名称"].ToString();
            语句.ExecuteNonQuery();
        }

        //增加管理员
        语句 = new SqlCommand("INSERT INTO [" + 程序.数据表前缀 + "社区_用户_用户]([ID],[昵称],[手机号],[标识],[性别],[密码],[用户组],[用户类型])" +
            "VALUES(1,@昵称,'','',@性别,@密码,@用户组,@用户类型)", 连接);
        语句.Parameters.Add("@昵称", SqlDbType.NVarChar).Value = GuanLiZhangHao.Text;
        语句.Parameters.Add("@性别", SqlDbType.Bit).Value = true;
        语句.Parameters.Add("@密码", SqlDbType.NVarChar).Value = 常用.MD5加密(常用.MD5加密(GuanLiMiMa.Text));
        语句.Parameters.Add("@用户组", SqlDbType.NVarChar).Value = "超级管理员";
        语句.Parameters.Add("@用户类型", SqlDbType.NVarChar).Value = "管理员";
        语句.ExecuteNonQuery();

        数据 = (DataSet)常用.读取对象(Server.MapPath("~/Install/留言表情.dat"));
        语句=new SqlCommand("INSERT INTO ["+程序.数据表前缀+"其它_留言_留言表情]([ID],[表情名称],[表情图片],[创建时间])"+
            "VALUES(@ID,@表情名称,@表情图片,@创建时间)",连接);
        语句.Parameters.Add("@ID",SqlDbType.Int).Value=0;
        语句.Parameters.Add("@表情名称",SqlDbType.NVarChar).Value="";
        语句.Parameters.Add("@表情图片",SqlDbType.NVarChar).Value="";
        语句.Parameters.Add("@创建时间",SqlDbType.DateTime).Value=DateTime.Now;

        for(int i=0;i<数据.Tables[0].Rows.Count;i++)
        {
            DataRow 行=数据.Tables[0].Rows[i];
            语句.Parameters["@ID"].Value=Convert.ToInt32(行["ID"]);
            语句.Parameters["@表情名称"].Value=行["表情名称"].ToString();
            语句.Parameters["@表情图片"].Value = 行["表情图片"].ToString().Replace("/UUN WAP CMS 3.1", "");
            语句.Parameters["@创建时间"].Value = Convert.ToDateTime(行["创建时间"]);
            语句.ExecuteNonQuery();
        }

        连接.Close();
        File.WriteAllText(Server.MapPath("install.txt"), "4", Encoding.UTF8);

        Response.Redirect("Step4.aspx");
    }
}
