• 数据读取(SQL)与文本写入(fileStream)


    要求:从三个不同服务器中取数,对最近10的历史数据进行去重,写出到文本。

    1.读取。

     1 public static DataTable ExecuteSql(string connectString, string querySqlString)
     2         {
     3             DataTable dt = new DataTable();
     4             using (SqlConnection conn = new SqlConnection(connectString))
     5             {
     6                 conn.Open();
     7                 SqlCommand cmd = conn.CreateCommand();
     8                 cmd.CommandText = querySqlString;
     9                 using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))
    10                 {
    11                     adapter.SelectCommand.CommandTimeout = 60 * 30;
    12                     adapter.Fill(dt);
    13                     return dt;
    14                 }
    15             }
    16         }

    当然,另外还有一种,定义了一个我要使用的类型,返回List<T>:

     1 public static List<MarketUrl> GetUrlListFromDataBase(string serverName, string sqlString)
     2         {
     3             List<MarketUrl> list = new List<MarketUrl>();
     4             MarketUrl mu = new MarketUrl();
     5             string connectStr = ConfigurationManager.ConnectionStrings[serverName].ConnectionString;
     6             using (SqlConnection conn = new SqlConnection(connectStr))
     7             {
     8                 conn.Open();
     9                 SqlCommand cmd = conn.CreateCommand();
    10                 cmd.CommandText = sqlString;
    11                 cmd.CommandTimeout = 60 * 30;
    12                 SqlDataReader reader = cmd.ExecuteReader();
    13                 while (reader.Read())
    14                 {
    15                     var dr = new MarketUrl()
    16                     {
    17                         market = reader.GetString(reader.GetOrdinal("MarketCode")),
    18                         url = reader.GetString(reader.GetOrdinal("Url"))
    19                     };
    20                     list.Add(dr);
    21                 }
    22             }
    23             return list;
    24         }

    2.去重(我的思路是,在取数的时候,对各自的data select 的时候先进行distinct,然后三个data merge到一起时,再次duplicate):

    1 //colmuns 是distinct的 数组,为columnName
    2 public static DataTable GetDistinctRow(DataTable dt, string[] columns)
    3         {
    4             DataView dv = dt.DefaultView;
    5             DataTable dtDistinct = dv.ToTable(true, columns);
    6             return dtDistinct;
    7         }

    3.DataRows ConvertTo DataTable

     1 //这是个额外用的到操作,先记下
     2 public static DataTable ConvertToDataTable(DataRow[] rows)
     3         {
     4             if (rows == null || rows.Count() < 1)
     5                 return null;
     6             DataTable dtResult = rows[0].Table.Clone();
     7             foreach (DataRow r in rows)
     8             {
     9                 dtResult.Rows.Add(r.ItemArray);
    10             }
    11             return dtResult;
    12         }

    4.写入到文本,因code还涉及到别的一些操作,这里只写最简单部分:

     1 StringBuilder sb = new StringBuilder();
     2 foreach (DataRow row in dt.Rows)
     3 {
     4       sb.AppendLine(dateString + " " + row[0].ToString() + " " + row[1].ToString());
     5 }
     6 using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write))
     7 {
     8      using (TextWriter tw = new StreamWriter(fs, Encoding.Default))
     9      {
    10          tw.Write(sb.ToString());
    11      }
    12 }
    13 File.WriteAllText(logPath, "[" + DateTime.UtcNow + "] Successed...
    ");
    14 
  • 相关阅读:
    质量属性分析之《淘宝网》
    每日总结(3.7)
    每日总结(3.6)
    读架构漫谈有感
    每日总结(3.5)
    每日总结(3.4)
    laravel 输出时间少了8小时
    laravel 循环添加新的数据之后如何排序
    php trait使用详解
    laravel Guzzle使用
  • 原文地址:https://www.cnblogs.com/shy-huang/p/4334757.html
Copyright © 2020-2023  润新知