1 private void Form1_Load(object sender, EventArgs e)
2 {
3 BindDataBase(combDataBaseNew, 0, "");
4 BindDataBase(combDataBaseOld, 0, "");
5
6 }
7 //获取新数据库 0 是数据库 1是 表
8 private void BindDataBase(ComboBox combDataBase, int style, string database)
9 {
10 switch (style)
11 {
12 case 0:
13 {
14 string strSql = "select name from sysdatabases order by name";
15 combDataBase.DataSource = this.GetDataBases(strSql).Tables[0];
16 combDataBase.DisplayMember = "name";
17 combDataBase.ValueMember = "name";
18 break;
19 }
20 case 1:
21 {
22 StringBuilder sb = new StringBuilder();
23 sb.AppendFormat("use {0}", database);
24 sb.AppendFormat(" SELECT Name from sysobjects Where Type=‘U‘ ORDER BY Name");
25 combDataBase.DataSource = this.GetDataBases(sb.ToString()).Tables[0];
26 combDataBase.ValueMember = "name";
27 combDataBase.DisplayMember = "name";
28 break;
29 }
30 }
31 }
32 //获取数据库连接
33 private SqlConnection GetConnections()
34 {
35 SqlConnectionStringBuilder sqlsb = new SqlConnectionStringBuilder();
36 sqlsb.DataSource = "localhost";
37 sqlsb.IntegratedSecurity = true;
38 SqlConnection conn = new SqlConnection();
39 conn.ConnectionString = sqlsb.ConnectionString;
40 return conn;
41 }
42 //根据查询语句,获取对应的数据集
43 private DataSet GetDataBases(string strSql)
44 {
45 SqlDataAdapter sda = new SqlDataAdapter();
46 SqlCommand cmd = new SqlCommand();
47 DataSet ds = new DataSet();
48 using (SqlConnection conn = this.GetConnections())
49 {
50 conn.Open();
51 cmd.CommandText = strSql;
52 cmd.CommandType = CommandType.Text;
53 cmd.Connection = conn;
54 sda.SelectCommand = cmd;
55 sda.Fill(ds, "databases");
56 conn.Close() ;
57
58 }
59 return ds;
60 }
61 private int GetDoIt(string strSql)
62 {
63 SqlCommand cmd = new SqlCommand();
64 object b = null;
65 using (SqlConnection conn = this.GetConnections())
66 {
67 conn.Open();
68 cmd.CommandText = strSql;
69 cmd.CommandType = CommandType.Text;
70 cmd.Connection = conn;
71 b= cmd.ExecuteNonQuery();
72 conn.Close();
73 }
74 return Convert.ToInt32(b);
75 }
76 private void btn_biaoOld_Click(object sender, EventArgs e)
77 {
78 BindDataBase(comOldtable, 1, combDataBaseOld.SelectedValue.ToString());
79
80 }
81
82 private void btn_biaoNew_Click(object sender, EventArgs e)
83 {
84 BindDataBase(comNewtable, 1, combDataBaseNew.SelectedValue.ToString());
85 }
86 //绑定grid控件
87 public void GetTableZiDuan()
88 {
89 string strSql = string.Format("use {0} Select Name FROM SysColumns Where id=Object_Id(‘{1}‘)", combDataBaseOld.SelectedValue, comOldtable.SelectedValue);
90 this.dataGridView1.DataSource = GetDataBases(strSql).Tables[0];
91
92 }
93 //绑定combobox控件
94 public void GetNewTableZiDuan()
95 {
96 string strSql = string.Format("use {0} Select Name FROM SysColumns Where id=Object_Id(‘{1}‘)", combDataBaseNew.SelectedValue, comNewtable.SelectedValue);
97 this.NewZiDuan.DataSource = GetDataBases(strSql).Tables[0];
98 this.NewZiDuan.ValueMember = "name";
99 this.NewZiDuan.DisplayMember = "name";
100 }
101 private void btn_OldZiDuan_Click(object sender, EventArgs e)
102 {
103 GetTableZiDuan();
104 }
105
106 private void btn_NewZiDuan_Click(object sender, EventArgs e)
107 {
108 GetNewTableZiDuan();
109 }
110 private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
111 {
112 if (this.dataGridView1.Rows.Count != 0)
113 {
114 for (int i = 0; i < this.dataGridView1.Rows.Count; )
115 {
116 this.dataGridView1.Rows[i].DefaultCellStyle.BackColor = System.Drawing.Color.Pink;
117 i += 2;
118 }
119 }
120 }
121
122 private void btn_StartZhuanLu_Click(object sender, EventArgs e)
123 {
124 List<string> oldList = new List<string>();
125 List<string> newList = new List<string>();
126 for (int i = 0; i < this.dataGridView1.Rows.Count; i++)
127 {
128 if ((bool)(((DataGridViewCheckBoxCell)this.dataGridView1.Rows[i].Cells["isTrue"]).EditedFormattedValue) == true)
129 {
130 oldList.Add(dataGridView1.Rows[i].Cells["OldZiDuan"].Value.ToString());
131 newList.Add(((DataGridViewComboBoxCell)dataGridView1.Rows[i].Cells["NewZiDuan"]).Value.ToString());
132 }
133 }
134 OldToNew(oldList,newList,"");
135 }
136 private void OldToNew(List<string> oldList, List<string> newList, string where)
137 {
138 StringBuilder sb = new StringBuilder();
139 sb.AppendFormat("use {0}",combDataBaseOld.SelectedValue);
140 sb.AppendFormat(" select ");
141 for (int i = 0; i < oldList.Count; i++)
142 {
143 sb.AppendFormat(oldList[i] + ",");
144 }
145 sb.Remove(sb.ToString().LastIndexOf(‘,‘), 1);
146 sb.AppendFormat(" from {0}", comOldtable.SelectedValue);
147 if (!string.IsNullOrEmpty(where))
148 {
149 sb.AppendFormat(" where {0}", where);
150 }
151 MessageBox.Show(sb.ToString());
152 DataTable dt= GetDataBases(sb.ToString()).Tables[0];
153 if (dt.Rows.Count > 0)
154 {
155 int sum = 0;
156 for (int i = 0; i < dt.Rows.Count; i++)
157 {
158 sum+=InsertNewDataBase(dt,i,newList,oldList);
159 }
160 if (sum == dt.Rows.Count)
161 {
162 MessageBox.Show("数据转录成功");
163 }
164 else
165 {
166 if (sum != 0)
167 {
168 MessageBox.Show("理论转录信息条数:" + dt.Rows.Count + ";实践转录信息条数:" + sum + ";实际转录条数与理论条数不符");
169 }
170
171 }
172 }
173 else
174 {
175 MessageBox.Show("要转录的旧数据库,没有数据信息");
176 }
177 }
178 private int InsertNewDataBase(DataTable dt,int a,List<string> newList,List<string> oldList)
179 {
180 int sum = 0;
181 try
182 {
183 StringBuilder sb = new StringBuilder();
184 sb.AppendFormat("use {0}", combDataBaseNew.SelectedValue);
185 sb.AppendFormat(" insert into {0} (", comNewtable.SelectedValue);
186 for (int i = 0; i < newList.Count; i++)
187 {
188 sb.AppendFormat(newList[i] + ",");
189 }
190 sb.Remove(sb.ToString().LastIndexOf(‘,‘), 1);
191 sb.AppendFormat(")values(");
192 for (int i = 0; i < oldList.Count; i++)
193 {
194 sb.AppendFormat("‘" + dt.Rows[a][oldList[i]] + "‘" + ",");
195 }
196 sb.Remove(sb.ToString().LastIndexOf(‘,‘), 1);
197 sb.AppendFormat(")");
198 MessageBox.Show(sb.ToString());
199 sum = GetDoIt(sb.ToString());
200 return sum;
201 }
202 catch (Exception e)
203 {
204 MessageBox.Show(e.Message);
205 return sum;
206 }
207
208 }
209 }