-
Notifications
You must be signed in to change notification settings - Fork 0
/
launch2.cs
100 lines (81 loc) · 3.47 KB
/
launch2.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
using System;
using System.Text;
using System.Data;
using System.Collections.Generic;
namespace DataRows
{
public static partial class Reader
{
public static IEnumerable<Launch2> ReadLaunch2(this IDbConnection dbConnection, string query)
{
long default_Id = default;
string default_Mission = default;
DateTime default_LaunchDateTime = default;
string default_NET = default;
bool default_StageRecovery = default;
using (var cmd = dbConnection.CreateCommand())
{
cmd.CommandType = CommandType.Text;
cmd.CommandText = query;
using (var reader = cmd.ExecuteReader())
{
var fc = reader.FieldCount;
var row = new object[fc];
var ord_Id = reader.GetOrdinal("Id");
var ord_Mission = reader.GetOrdinal("Mission");
var ord_LaunchDateTime = reader.GetOrdinal("LaunchDateTime");
var ord_NET = reader.GetOrdinal("NET");
var ord_StageRecovery = reader.GetOrdinal("StageRecovery");
while (reader.Read())
{
// TODO: Unnecessary boxing?
// TODO: Two strategies, one for wide rows and one for narrow rows?
var afc = reader.GetValues(row);
if (afc != fc)
{
throw new Exception($"Expected {fc} fields but got {afc} fields");
}
var val_Id = (row[ord_Id] is DBNull) ? default_Id : ((long)row[ord_Id]);
var val_Mission = (row[ord_Mission] is DBNull) ? default_Mission : ((string)row[ord_Mission]);
var val_LaunchDateTime = (row[ord_LaunchDateTime] is DBNull) ? default_LaunchDateTime : ((DateTime)row[ord_LaunchDateTime]);
var val_NET = (row[ord_NET] is DBNull) ? default_NET : ((string)row[ord_NET]);
var val_StageRecovery = (row[ord_StageRecovery] is DBNull) ? default_StageRecovery : ((bool)row[ord_StageRecovery]);
yield return new Launch2
{
Id = val_Id,
Mission = val_Mission,
LaunchDateTime = val_LaunchDateTime,
NET = val_NET,
StageRecovery = val_StageRecovery,
};
}
}
}
}
}
public class Launch2
{
public override string ToString ()
{
var sb = new StringBuilder ();
sb.Append ("{ Launch2 ");
sb.Append(", Id = ");
sb.Append(Id);
sb.Append(", Mission = ");
sb.Append(Mission);
sb.Append(", LaunchDateTime = ");
sb.Append(LaunchDateTime);
sb.Append(", NET = ");
sb.Append(NET);
sb.Append(", StageRecovery = ");
sb.Append(StageRecovery);
sb.Append (" }");
return sb.ToString ();
}
public long Id { get; set;}
public string Mission { get; set;}
public DateTime LaunchDateTime { get; set;}
public string NET { get; set;}
public bool StageRecovery { get; set;}
}
}