设为首页 收藏本站
查看: 1068|回复: 0

[经验分享] sql数据库之间数据的转录

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-1-22 11:21:50 | 显示全部楼层 |阅读模式
本帖最后由 rfcd12 于 2014-1-22 11:22 编辑

[C#] 纯文本查看 复制代码
private void Form1_Load(object sender, EventArgs e)
        {
            BindDataBase(combDataBaseNew, 0, "");
            BindDataBase(combDataBaseOld, 0, "");

        }
        //获取新数据库 0 是数据库 1是 表
        private void BindDataBase(ComboBox combDataBase, int style, string database)
        {
            switch (style)
            {
                case 0:
                    {
                        string strSql = "select name from sysdatabases order by name";
                        combDataBase.DataSource = this.GetDataBases(strSql).Tables[0];
                        combDataBase.DisplayMember = "name";
                        combDataBase.ValueMember = "name";
                        break;
                    }
                case 1:
                    {
                        StringBuilder sb = new StringBuilder();
                        sb.AppendFormat("use {0}", database);
                        sb.AppendFormat(" SELECT Name from sysobjects Where Type='U' ORDER BY Name");
                        combDataBase.DataSource = this.GetDataBases(sb.ToString()).Tables[0];
                        combDataBase.ValueMember = "name";
                        combDataBase.DisplayMember = "name";
                        break;
                    }
            }
        }
        //获取数据库连接
        private SqlConnection GetConnections()
        {
            SqlConnectionStringBuilder sqlsb = new SqlConnectionStringBuilder();
            sqlsb.DataSource = "localhost";
            sqlsb.IntegratedSecurity = true;
            SqlConnection conn = new SqlConnection();
            conn.ConnectionString = sqlsb.ConnectionString;
            return conn;
        }
        //根据查询语句,获取对应的数据集
        private DataSet GetDataBases(string strSql)
        {
            SqlDataAdapter sda = new SqlDataAdapter();
            SqlCommand cmd = new SqlCommand();
            DataSet ds = new DataSet();
            using (SqlConnection conn = this.GetConnections())
            {
                conn.Open();
                cmd.CommandText = strSql;
                cmd.CommandType = CommandType.Text;
                cmd.Connection = conn;
                sda.SelectCommand = cmd;
                sda.Fill(ds, "databases");
                conn.Close()        ;

            }
            return ds;
        }
        private int GetDoIt(string strSql)
        {
            SqlCommand cmd = new SqlCommand();
            object b = null;
            using (SqlConnection conn = this.GetConnections())
            {
                conn.Open();
                cmd.CommandText = strSql;
                cmd.CommandType = CommandType.Text;
                cmd.Connection = conn;
                b= cmd.ExecuteNonQuery();
                conn.Close();
            }
           return Convert.ToInt32(b);
        }
        private void btn_biaoOld_Click(object sender, EventArgs e)
        {
            BindDataBase(comOldtable, 1, combDataBaseOld.SelectedValue.ToString());

        }

        private void btn_biaoNew_Click(object sender, EventArgs e)
        {
            BindDataBase(comNewtable, 1, combDataBaseNew.SelectedValue.ToString());
        }
        //绑定grid控件
        public void GetTableZiDuan()
        {
            string strSql = string.Format("use {0}  Select Name FROM SysColumns Where id=Object_Id('{1}')", combDataBaseOld.SelectedValue, comOldtable.SelectedValue);
            this.dataGridView1.DataSource = GetDataBases(strSql).Tables[0];

        }
        //绑定combobox控件
        public void GetNewTableZiDuan()
        {
            string strSql = string.Format("use {0}  Select Name FROM SysColumns Where id=Object_Id('{1}')", combDataBaseNew.SelectedValue, comNewtable.SelectedValue);
            this.NewZiDuan.DataSource = GetDataBases(strSql).Tables[0];
            this.NewZiDuan.ValueMember = "name";
            this.NewZiDuan.DisplayMember = "name";
        }
        private void btn_OldZiDuan_Click(object sender, EventArgs e)
        {
            GetTableZiDuan();
        }

        private void btn_NewZiDuan_Click(object sender, EventArgs e)
        {
            GetNewTableZiDuan();
        }
        private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            if (this.dataGridView1.Rows.Count != 0)
            {
                for (int i = 0; i < this.dataGridView1.Rows.Count; )
                {
                    this.dataGridView1.Rows.DefaultCellStyle.BackColor = System.Drawing.Color.Pink;
                    i += 2;
                }
            }
        }

        private void btn_StartZhuanLu_Click(object sender, EventArgs e)
        {
            List<string> oldList = new List<string>();
            List<string> newList = new List<string>();
            for (int i = 0; i < this.dataGridView1.Rows.Count; i++)
            {
                if ((bool)(((DataGridViewCheckBoxCell)this.dataGridView1.Rows.Cells["isTrue"]).EditedFormattedValue) == true)
                {
                    oldList.Add(dataGridView1.Rows.Cells["OldZiDuan"].Value.ToString());
                    newList.Add(((DataGridViewComboBoxCell)dataGridView1.Rows.Cells["NewZiDuan"]).Value.ToString());
                }
            }
           OldToNew(oldList,newList,"");
        }
        private void OldToNew(List<string> oldList, List<string> newList, string where)
        {
            StringBuilder sb = new StringBuilder();
            sb.AppendFormat("use {0}",combDataBaseOld.SelectedValue);
            sb.AppendFormat(" select ");
            for (int i = 0; i < oldList.Count; i++)
            {
                sb.AppendFormat(oldList + ",");
            }
            sb.Remove(sb.ToString().LastIndexOf(','), 1);
            sb.AppendFormat(" from {0}", comOldtable.SelectedValue);
            if (!string.IsNullOrEmpty(where))
            {
                sb.AppendFormat(" where {0}", where);
            }
            MessageBox.Show(sb.ToString());
           DataTable dt= GetDataBases(sb.ToString()).Tables[0];
           if (dt.Rows.Count > 0)
           {
               int sum = 0;
               for (int i = 0; i < dt.Rows.Count; i++)
               {
                 sum+=InsertNewDataBase(dt,i,newList,oldList);
               }
               if (sum == dt.Rows.Count)
               {
                   MessageBox.Show("数据转录成功");
               }
               else
               {
                   if (sum != 0)
                   {
                       MessageBox.Show("理论转录信息条数:" + dt.Rows.Count + ";实践转录信息条数:" + sum + ";实际转录条数与理论条数不符");
                   }

               }
           }
           else 
           {
               MessageBox.Show("要转录的旧数据库,没有数据信息");
           }
        }
        private int  InsertNewDataBase(DataTable dt,int a,List<string> newList,List<string> oldList)
        {
            int sum = 0;
            try
            {
                StringBuilder sb = new StringBuilder();
                sb.AppendFormat("use {0}", combDataBaseNew.SelectedValue);
                sb.AppendFormat(" insert into {0} (", comNewtable.SelectedValue);
                for (int i = 0; i < newList.Count; i++)
                {
                    sb.AppendFormat(newList + ",");
                }
                sb.Remove(sb.ToString().LastIndexOf(','), 1);
                sb.AppendFormat(")values(");
                for (int i = 0; i < oldList.Count; i++)
                {
                    sb.AppendFormat("'" + dt.Rows[a][oldList] + "'" + ",");
                }
                sb.Remove(sb.ToString().LastIndexOf(','), 1);
                sb.AppendFormat(")");
                MessageBox.Show(sb.ToString());
                sum = GetDoIt(sb.ToString());
                return sum;
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
                return sum;
            }

        }
    }

211818366795.jpg


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-14497-1-1.html 上篇帖子: SQL Server 2005安装图解 下篇帖子: MSSQL系统表常用操作 sql数据库
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表