예제 #1
0
        public static async Task <ArrayList> GetDataArrayList()
        {
            string connectionString = "Data Source=tcp:XXXXX;Initial Catalog=XXXXX;User ID=XXXXX;Password=XXXXX;Trusted_Connection=False;Encrypt=True;Connection Timeout=3600";
            string query            = " SELECT  Top 2000 LinkId, CLCID, SBP, MAX(URL) AS URL " +
                                      " FROM (" +
                                      " SELECT LinkId, CLCID," +
                                      " CASE " +
                                      "    WHEN LEFT(SBP, 3) = 'pc=' THEN SBP " +
                                      "    ELSE '''' " +
                                      " END AS SBP, " +
                                      " URL " +
                                      " FROM [dbo].[Links] WHERE deleted = 0 ) AS  A " +
                                      " GROUP BY LinkId, CLCID, SBP";

            var result = new ArrayList();

            try
            {
                using (var conn = new SqlConnection(connectionString))
                {
                    conn.Open();
                    var command = new SqlCommand(query, conn);
                    command.CommandTimeout = 0;
                    var reader = await command.ExecuteReaderAsync();

                    HashSet <string> cl;
                    var u8 = Encoding.UTF8;

                    if (reader.HasRows)
                    {
                        cl = Utilities.GetColumnNames(reader);
                        while (reader.Read())
                        {
                            result.Add(new Record
                            {
                                linkId = reader.GetLong("LinkId", columnList: cl),
                                clcId  = reader.GetInt("CLCID", columnList: cl),
                                sbp    = reader.GetString("SBP", columnList: cl),
                                url    = u8.GetBytes(reader.GetString("URL", columnList: cl))
                            });
                        }
                    }
                }
            }
            catch (AggregateException ae)
            {
                throw ae.InnerException;
            }
            return(result);
        }