行列转换

来源:互联网 发布:点卡在淘宝怎么使用 编辑:程序博客网 时间:2024/04/30 07:43

数据库ad:

 

转变后的数据库表示形式:

 

纵向输出转换为横向输出。并且时间段顺序输出。

 

代码如下:

 class Class1
    {
        protected  SqlConnection conn;
        public Class1()
        {
            conn=new SqlConnection("Data Source=.;Initial Catalog=AD;Integrated Security=True");
        }
        public SqlConnection Connection
        {
            get { return conn; }
        }

        public DataTable mydatatable()
        {
                      
            SqlDataAdapter sda = new SqlDataAdapter("select 时间段 from Message where 星期几='星期日' order by 时间段", conn);
            DataSet ds = new DataSet();
            try
            {

                sda.Fill(ds, "Message");
                //int c = ds.Tables[0].Rows.Count;

                sda = new SqlDataAdapter("select 时间段 from Message where 星期几='星期一' order by 时间段", conn);
                sda.Fill(ds, "Message1");

                sda = new SqlDataAdapter("select 时间段 from Message where 星期几='星期二' order by 时间段", conn);
                sda.Fill(ds, "Message2");

                sda = new SqlDataAdapter("select 时间段 from Message where 星期几='星期三' order by 时间段", conn);
                sda.Fill(ds, "Message3");

                sda = new SqlDataAdapter("select 时间段 from Message where 星期几='星期四' order by 时间段", conn);
                sda.Fill(ds, "Message4");

                sda = new SqlDataAdapter("select 时间段 from Message where 星期几='星期五' order by 时间段", conn);
                sda.Fill(ds, "Message5");

                sda = new SqlDataAdapter("select 时间段 from Message where 星期几='星期六' order by 时间段", conn);
                sda.Fill(ds, "Message6");
            }
            catch (Exception ex)
            { }

            DataTable dt = new DataTable();
            DataColumn dc = new DataColumn("星期日", Type.GetType("System.String"));
            dt.Columns.Add(dc);
            dc = new DataColumn("星期一", Type.GetType("System.String"));
            dt.Columns.Add(dc);
            dc = new DataColumn("星期二", Type.GetType("System.String"));
            dt.Columns.Add(dc);
            dc = new DataColumn("星期三", Type.GetType("System.String"));
            dt.Columns.Add(dc);
            dc = new DataColumn("星期四", Type.GetType("System.String"));
            dt.Columns.Add(dc);
            dc = new DataColumn("星期五", Type.GetType("System.String"));
            dt.Columns.Add(dc);
            dc = new DataColumn("星期六", Type.GetType("System.String"));
            dt.Columns.Add(dc);

            //c为最大行的行数
            int c = 0;
            for (int j = 0; j < 6; j++)
            {
                if (ds.Tables[j].Rows.Count < ds.Tables[j + 1].Rows.Count)
                    c = ds.Tables[j + 1].Rows.Count;
            }
            DataRow dr;
            for (int i = 0; i < c; i++)
            {
                dr = dt.NewRow();

                if (i < ds.Tables["Message"].Rows.Count)
                {
                    dr["星期日"] = ds.Tables["Message"].Rows[i][0];
                }
                if (i < ds.Tables["Message1"].Rows.Count)
                {
                    dr["星期一"] = ds.Tables["Message1"].Rows[i][0];
                }
                if (i < ds.Tables["Message2"].Rows.Count)
                {
                    dr["星期二"] = ds.Tables["Message2"].Rows[i][0];
                }
                if (i < ds.Tables["Message3"].Rows.Count)
                {
                    dr["星期三"] = ds.Tables["Message3"].Rows[i][0];
                }
                if (i < ds.Tables["Message4"].Rows.Count)
                {
                    dr["星期四"] = ds.Tables["Message4"].Rows[i][0];
                }
                if (i < ds.Tables["Message5"].Rows.Count)
                {
                    dr["星期五"] = ds.Tables["Message5"].Rows[i][0];
                }
                if (i < ds.Tables["Message6"].Rows.Count)
                {
                    dr["星期六"] = ds.Tables["Message6"].Rows[i][0];
                }


                dt.Rows.Add(dr);

            }
            return dt;
        }
    }