论坛

    • 登录
    • 版块
    • 最新
    • 标签
    • 热门

    c# 根据多条ID条件查询文件中的内容显示出

    技术交流
    1
    1
    184
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • mmkkjls
      mmkkjls 最后由 编辑

       public DataTable ReadFile(string string_0, bool bool_0, DateTime StartTime, DateTime EndTime, long DianID, bool bool_1 = true, int int_0 = 0)
              {
                  idList = new List<long>();
      
                  DataTable dataTable = NewTable(bool_1);
                  //progressBar1.Value = 0;
                  if (File.Exists(string_0))
                  {
                      BinaryReader binaryReader = OpenFile(string_0, Encoding.Default);
                      //progressBar1.Maximum = Convert.ToInt32(binaryReader.BaseStream.Length / 36) + 2;
                      int i = 100;
                      for (int j = 0; i < binaryReader.BaseStream.Length; i += 36, j++)
                      {
                          //progressBar1.Value++;
                          binaryReader.BaseStream.Position = i;
                          long num = BitConverter.ToInt64(binaryReader.ReadBytes(8), 0);
                          binaryReader.BaseStream.Position = i + 8;
                          uint num2 = BitConverter.ToUInt32(binaryReader.ReadBytes(4), 0);
                          binaryReader.BaseStream.Position = i + 12;
                          double num3 = BitConverter.ToDouble(binaryReader.ReadBytes(8), 0);
                          binaryReader.BaseStream.Position = i + 20;
                          uint num4 = BitConverter.ToUInt32(binaryReader.ReadBytes(4), 0);
                          binaryReader.BaseStream.Position = i + 24;
                          uint num5 = BitConverter.ToUInt32(binaryReader.ReadBytes(4), 0);
                          binaryReader.BaseStream.Position = i + 28;
                          long dateData = BitConverter.ToInt64(binaryReader.ReadBytes(8), 0);
                          DateTime dateTime = DateTime.FromBinary(dateData);
                          bool flag = false;
                          if (bool_0)
                          {
                              if ((num5 & 0x40000u) != 0 || (num5 & 0x80000u) != 0 || (num5 & 0x200000u) != 0)
                              {
                                  flag = true;
                              }
                          }
                          else
                          {
                              flag = true;
                          }
                          if (!flag)
                          {
                              continue;
                          }
                          if (num3.ToString().ToUpper().Contains("E"))
                          {
                              int length = num3.ToString().ToUpper().IndexOf("E");
                              num3 = Convert.ToDouble(num3.ToString().Substring(0, length));
                          }
                          idList.Add(num);                 
                          DataRow dataRow = dataTable.NewRow();
                          dataRow["所在密采文件"] = Path.GetFileName(string_0);
                          dataRow["记录ID"] = j;
                          dataRow["唯一编码"] = num;
                          dataRow["物理地址"] = num2;
                          dataRow["值"] = num3;
                          dataRow["原始值"] = num4;
                          dataRow["状态ID"] = num5;
                          dataRow["对应时间"] = dateTime;
                          dataRow["文件路径"] = Path.GetDirectoryName(string_0);
                          Enum2 @enum = (Enum2)int_0;
                          dataRow["文件来源"] = @enum.ToString();
      
                          DateTime value = dateTime;
                          if (value >= StartTime && value <= EndTime)
                          {
                              if (DianID == 0 || num == DianID)
                              {
                                  dataTable.Rows.Add(dataRow);
                                  continue;
                              }
                          }
      
                      }
                      //progressBar1.Value = progressBar1.Maximum;
                      binaryReader.Close();
                  }
      
                  return dataTable;
              }
      
      

      private void checkButton1_CheckedChanged(object sender, EventArgs e)
      {
      string sql = "SELECT UniqueID FROM DeviceModifyDetail WHERE DevLabel LIKE '%028A04%'";
      object d = SqlHelper.ExecuteScalar(Connstr, CommandType.Text, sql);

              string UniqueID =Convert.ToString(d);
              for (int i = 0; i < this.gridView1.RowCount; i++)
              //遍历表中的所有行
              {
                  if (this.gridView1.IsRowSelected(i) == true)
                  //判断当前行是否被选中
                  {
                      try
                      {
      
                          UniqueID = this.gridView1.GetDataRow(i)["UniqueID"].ToString();//取选中行的ID字段的值
      
                      }
                      catch
                      {
      
                      }
                  }
              }
      
      
              string str = dateEdit1.DateTime.ToString("yyyyMMddHH");
      
              string mc = mcPath;//读取密采文件夹
      
              string fileName = mc + str + ".mcZ";
      
              isCompress = true;
              bool exist = System.IO.File.Exists(fileName);
      
              if (!exist)
              {
                  fileName = mc + str + ".mc";
                  isCompress = false;
                  mcFile = fileName;
              }
      
              ////解压,存在就不重复解压
      
      
              if (isCompress)
              {
                  mcFile = fileName.Substring(0, fileName.Length - 1);
                  if (!File.Exists(mcFile))
                      DeZip(fileName, mcFile);
              }
              
              long dianID = Convert.ToInt64(UniqueID);
              DateTime dt1 = dateEdit1.DateTime;
              DateTime dt2 = dateEdit2.DateTime;
              new Thread(() => {
      
              DataTable dataTable = ReadFile(mcFile, false, dt1, dt2, dianID, true, 0);
               
              dataTable.AcceptChanges();
              gridControl1.DataSource = dataTable;
                
              }).Start();
              Thread tr = new Thread(Thread.EndThreadAffinity);
          }
      
      ReadFile方法根据条件查找文件中的内容,显示出。
      想实现通过sql语句查询出的结果多条件“ID”,查询文件中的内容显示出来。
      现在只能实现单条查询,如何实现呢?
      1 条回复 最后回复 回复 引用 0
      • First post
        Last post