private void btnCreatPinYin_Click(object sender, EventArgs e) { try { string quanpin = this.addColumn("quanpin"); string shouZim = this.addColumn("szm"); string hanzi = this.cmbHanZi.SelectedItem.ToString(); NameObject nobject = new NameObject(); nobject.hanzi = hanzi; nobject.shouZim = shouZim; nobject.quanpin = quanpin; nobject.tableName = this.cmbTableName.SelectedItem.ToString(); ParameterizedThreadStart pt = new ParameterizedThreadStart(DoSomthing); Thread t = new Thread(pt); t.Start(nobject); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
private void DoSomthing(object nobject) { try { NameObject nameObject = nobject as NameObject; string quanpin = nameObject.quanpin; string shouZim = nameObject.shouZim; string hanzi = nameObject.hanzi; string tableName = nameObject.tableName; string msg2 = "开始获取所有数据信息"; if (this.OnProcessNotify != null) { this.OnProcessNotify(msg2, 0); } string sqlString = "SELECT gid," + hanzi + "," + quanpin + "," + shouZim + " FROM " + tableName + " where " + hanzi + " is not null"; NpgsqlDataAdapter da = new NpgsqlDataAdapter(sqlString, dbcon); da.UpdateCommand = new NpgsqlCommand(); da.UpdateCommand.Parameters.Add(new NpgsqlParameter("@" + quanpin, DbType.String, 254, quanpin)); da.UpdateCommand.Parameters.Add(new NpgsqlParameter("@" + shouZim, DbType.String, 254, shouZim)); NpgsqlCommandBuilder builder = new NpgsqlCommandBuilder(da); DataSet dataset = new DataSet(); da.Fill(dataset); msg2 = "完成获取所有数据信息"; if (this.OnProcessNotify != null) { this.OnProcessNotify(msg2, 0); } DataColumn hanziCol = dataset.Tables[0].Columns[hanzi]; DataColumn quanpinCol = dataset.Tables[0].Columns[quanpin]; DataColumn shouZimCol = dataset.Tables[0].Columns[shouZim]; int j = 0; int count = dataset.Tables[0].Rows.Count; foreach (DataRow row in dataset.Tables[0].Rows) { j++; string sql = ""; try { string hanziValue = row[hanziCol].ToString().Trim(); row[quanpinCol] = Hz2Py.GetPinyin(hanziValue); row[shouZimCol] = Hz2Py.GetFirstPinyin(hanziValue); sql = "update " + tableName + " set " + quanpin + "='" + row[quanpinCol].ToString() + "'," + shouZim + "='" + row[shouZimCol] + "' where gid=" + row[0].ToString(); NpgsqlCommand objCommand = new NpgsqlCommand(sql, dbcon); objCommand.ExecuteNonQuery(); } catch { LogManager.writeLog("异常:<" + sql + ">语法错误"); } string msg = "已处理路网数据" + j.ToString() + "条,共" + count.ToString() + "条"; if (this.OnProcessNotify != null) { this.OnProcessNotify(msg, (j * 100) / count); } } string msg1 = "处理完成"; if (this.OnProcessNotify != null) { this.OnProcessNotify(msg1, 100); } } catch (Exception ex) { MessageBox.Show(ex.Message); } }