У меня есть следующий код для получения списка ценных бумаг из таблицы безопасности
type Security =
{ symbol: string; exchangeId: int; name: string; firstDate: DateTime; lastDate: DateTime }
let getSecurities (conName: string) =
// Using 'use' the 'Dispose' method is called automatically
let conStr =
ConfigurationManager.ConnectionStrings.Item(conName).ConnectionString
use conn = new NpgsqlConnection(conStr)
// Handle exceptions that happen when opening the connection
try conn.Open()
with ex -> raiseSql "Failed to connect to DB %s with Error %s " conName ex.Message
// Using object initializer, we can nicely set the properties
use cmd = new NpgsqlCommand()
cmd.Connection <- conn
cmd.CommandText <- "SELECT symbol, exchange_id, name, first_date, last_date FROM security;"
use reader =
try cmd.ExecuteReader()
with ex -> raiseSql "Failed to execute reader with error %s" ex.Message
let results =
[ while reader.Read() do
yield {
symbol = reader.GetString(reader.GetOrdinal("symbol"));
exchangeId = reader.GetInt32(reader.GetOrdinal("exchange_id"));
name = reader.GetString(reader.GetOrdinal("name"));
firstDate = reader.GetDateTime(reader.GetOrdinal("first_date"));
lastDate = reader.GetDateTime(reader.GetOrdinal("last_date"));
} ]
// Do more with the reader
results
Поля first_date
и last_date
имеют возможные нулевые значения.Как мне их обработать, чтобы я мог решить, что делать, если они найдены нулевыми?
Например, я могу захотеть вернуть нулевое значение типа, если он найден равным нулю.Или, может быть, я хочу поднять исключение