/// <summary> /// 该方法用于查找标准正文是否存在 /// </summary> /// <param name="sentence">MD5加密后的正文编码</param> /// <returns></returns> public Task IsExistAsync(ZhengwenInfo myinfo) { return(Task.Run(() => { int num = 0; //mysqliter.Open(); string str_sql = $"select * from qianhai.{Setting._zhengwenchachongbiao} where 编号='{myinfo._bianhao}'"; using (MySqlConnection mysql = new MySqlConnection(mysql_constr)) { using (MySqlCommand mycmd = new MySqlCommand(str_sql, mysql)) { mysql.Open(); var reader = mycmd.ExecuteReader(); if (reader.HasRows) { myinfo._exist = true; _chongfushu++; } reader.Close(); mysql.Close(); } } list_zhenweng.Add(myinfo); })); }
/// <summary> /// 查询数据到datatable /// </summary> /// <param name="sql"></param> /// <returns></returns> public List <ZhengwenInfo> GetDataFromTable(string str_sql) { List <ZhengwenInfo> list = new List <ZhengwenInfo>(); try { mysql.ChangeDatabase("qianhai"); MySqlCommand mycmd = new MySqlCommand(str_sql, mysql); var myreader = mycmd.ExecuteReader(); while (myreader.Read()) { ZhengwenInfo zwinfo = new ZhengwenInfo() { _xuhao = myreader.GetString(0), _bianhao = myreader.GetString(1), _laiyuan = myreader.GetString(2), _zhuanzailiang = myreader.GetString(3), _zhengwenneirong = myreader.GetString(4), _shijian = myreader.GetString(5), _riqi = myreader.GetString(6), }; list.Add(zwinfo); } myreader.Close(); } catch { } return(list); }
/// <summary> /// 根据页数获得当页数据 /// </summary> /// <param name="yeshu"></param> /// <param name="offset"></param> /// <param name="tablename"></param> /// <returns></returns> public List <ZhengwenInfo> GetDTByPage(string yeshu, int offset, string tablename) { List <ZhengwenInfo> list = new List <ZhengwenInfo>(); if (tablename.Equals("tablesetting") || tablename.Equals("zhengwensetting")) { return(list); } //分解出当前页和总页数 int page = 0; int pagenum = 0; page = Convert.ToInt32(yeshu.Split(new char[] { '/' })[0]); pagenum = Convert.ToInt32(yeshu.Split(new char[] { '/' })[1]); string str_sql = $"select * from {tablename} order by 时间 desc limit {(page - 1) * offset},{offset}"; MySqlConnection mysql = new MySqlConnection(mysql_constr); mysql.Open(); mysql.ChangeDatabase("qianhai"); MySqlCommand mycmd = new MySqlCommand(str_sql, mysql); var myreader = mycmd.ExecuteReader(); try { while (myreader.Read()) { ZhengwenInfo zwinfo = new ZhengwenInfo() { _xuhao = myreader.GetString(0), _bianhao = myreader.GetString(1), _laiyuan = myreader.GetString(2), _zhuanzailiang = myreader.GetString(3), _zhengwenneirong = myreader.GetString(4), _shijian = myreader.GetString(5), _riqi = myreader.GetString(6), }; list.Add(zwinfo); } } catch { } myreader.Close(); mycmd.Dispose(); mycmd.Clone(); mysql.Dispose(); //CommonMethod.AddXuhao(mydt); return(list); }
/// <summary> /// 模糊查询 /// </summary> /// <param name="list_fields">字段集合</param> /// <param name="str">搜索词</param> /// <param name="shtname">数据表名</param> /// <returns></returns> public List <ZhengwenInfo> MohuChaxun(List <string> list_fields, string str, string shtname) { List <ZhengwenInfo> list = new List <ZhengwenInfo>(); List <string> list_where = new List <string>(); foreach (var item in list_fields) { list_where.Add($"{item} like '%{str}%'"); } string sql_where = string.Join(" or ", list_where); DataTable mydt = new DataTable(); //获得该表下数据datatable string str_sql = $"select * from {shtname} where ({sql_where}) order by riqi desc limit 100"; if (str.Trim().Equals(string.Empty)) { str_sql = $"select * from {shtname} order by riqi desc limit 100"; } var myreader = _mycon.CreateCommand(str_sql).ExecuteReader(); do { try { while (myreader.Read()) { ZhengwenInfo zwinfo = new ZhengwenInfo() { _xuhao = myreader.GetString(0), _bianhao = myreader.GetString(1), _laiyuan = myreader.GetString(2), _zhuanzailiang = myreader.GetString(3), _zhengwenneirong = myreader.GetString(4), _shijian = myreader.GetString(5), _riqi = myreader.GetString(6), }; list.Add(zwinfo); } } catch { } } while (myreader.NextResult()); return(list); }
/// <summary> /// 点击开始按钮时触发的事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public async void PictureBox2_Click(object sender, EventArgs e) { _stop = false; _mycontroller.list_zhenweng.Clear();//清空查询文章集合 List <ZhengwenInfo> list_result = new List <ZhengwenInfo>(); string mysql_constr = $"Server={Properties.Settings.Default._ip};Database=qianhai;Uid=root;Pwd=111111;AllowUserVariables=false;"; List <Task> list_task = new List <Task>(); //判断状态,如果是暂停或者空白那么开始,并且执行查重 if (_statue.Equals(string.Empty) || _statue.Equals("已暂停")) { _statue = "正在查询"; lbl_statue.Text = _statue; UpdateText(lbl_time, "已用时:00:00:00"); timer1.Start(); /*开始查重*/ //1、整体查重,查到所有文件的重复和不重复情况 //获得path下的所有文件 DirectoryInfo di = new DirectoryInfo(_filename); List <FileInfo> list_files = di.GetFiles().ToList(); //开始循环所有的文档,实例化一个对应的类 ZhengwenInfo zhengweninfo = null; await Task.Run(() => { for (int i = 0; i < list_files.Count; i++) { //先判断是否人工暂停 if (_stop) { //停止计时器 timer1.Stop(); //改变运行状态属性 _statue = "已暂停"; //赋值运行状态lbl lbl_statue.BeginInvoke(new Action(() => { lbl_statue.Text = _statue; })); break; } zhengweninfo = new ZhengwenInfo(); //文档有可能报错,保存在错误信息中 try { //1、对每一个文档新建一个线程 //将线程放入集合 lbl_jindu.BeginInvoke(new Action(() => { lbl_jindu.Text = $"进度:{i + 1}/{list_files.Count}"; })); string filename = list_files[i].FullName; string laiyuan = list_files[i].Name; string laiyuanbyte = _mycontroller.String2Byte(laiyuan); string zhengwen = _mycontroller.GetZhengwen(filename); //获得正文文本 string md5 = _mycontroller.GenerateMD5(zhengwen); //正文转换成二进制 //string zhengwenbyte = _mycontroller.String2Byte(zhengwen);//正文转二进制 zhengweninfo._laiyuan = laiyuanbyte; //_zhengwenneirong = zhengwenbyte, //_zhengwenneirong = zhengwen, zhengweninfo._bianhao = md5; } catch (Exception ex) { zhengweninfo._ex = ex; zhengweninfo._error = true; } Task mytask = _mycontroller.IsExistAsync(zhengweninfo); lbl_chongfulv.BeginInvoke(new Action( () => { lbl_chongfulv.Text = "重复:" + _mycontroller._chachonglv.ToString(); } )); list_task.Add(mytask); } }); await Task.WhenAll(list_task.ToArray()); //2、根据是否入库和累计热度情况,对每一个文件进行操作,拼接sql的方式 //如果是入库,那么对所有不重复的文章进行拼接sql并执行,重复的不用管 //如果是累计热度,那么对所有重复的文档进行update更新装载量,不重复的文档不要 lbl_statue.BeginInvoke(new Action(() => { lbl_statue.Text = "正在更新数据"; })); lbl_chongfulv.BeginInvoke(new Action(() => { lbl_chongfulv.Text = "重复:" + _mycontroller._chongfushu.ToString(); })); if (Setting._zhengwenruku) { //如果不存在,就拼接字符串 string str_sql = $"insert into {Setting._zhengwenrukubiao} (编号,来源,转载量,时间) values "; List <string> list_values = new List <string>(); for (int i = 0; i < _mycontroller.list_zhenweng.Count; i++) { zhengweninfo = _mycontroller.list_zhenweng[i]; if (!zhengweninfo._exist && !zhengweninfo._error)//如果不存在 并且 没有报错,那么入库 { list_values.Add($"('{zhengweninfo._bianhao}','{zhengweninfo._laiyuan}',1,'{DateTime.Now.ToShortDateString()}')"); } if (list_values.Count >= 1000)//如果大于500就保存一次 { await Task.Run(() => { using (MySqlConnection mysql = new MySqlConnection(mysql_constr)) { mysql.Open(); MySqlTransaction transaction = mysql.BeginTransaction();//开启事务 using (MySqlCommand mycmd = new MySqlCommand()) { mycmd.Connection = mysql; mycmd.CommandText = str_sql + string.Join(",", list_values); mycmd.Transaction = transaction; mycmd.CommandTimeout = 9999999; mycmd.ExecuteNonQuery(); transaction.Commit(); mysql.Close(); } } list_values.Clear(); }); } } if (list_values.Count != 0) { using (MySqlConnection mysql = new MySqlConnection(mysql_constr)) { mysql.Open(); MySqlTransaction transaction = mysql.BeginTransaction();//开启事务 using (MySqlCommand mycmd = new MySqlCommand()) { mycmd.Connection = mysql; mycmd.CommandText = str_sql + string.Join(",", list_values); mycmd.Transaction = transaction; mycmd.ExecuteNonQuery(); transaction.Commit(); mysql.Close(); } } } } if (Setting._leijiredu) { } //生成查重报告 lbl_statue.BeginInvoke(new Action(() => { lbl_statue.Text = "报告生成中"; })); /* * * 此处生成查重报告 * */ _statue = "已暂停"; lbl_statue.BeginInvoke(new Action(() => { lbl_statue.Text = "已暂停"; })); timer1.Stop(); } //如果是正在查询,那么要不做任何反应 else { return; //_statue = "已暂停"; //lbl_statue.Text = _statue; //StopResearch(); } }