SqlCommand cmd = new SqlCommand("SELECT dateReceived FROM table1", conn);
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
if (dr.HasRows)
{
while (dr.Read())
{
object sqlDateTime = dr[0];
DateTime? dt = (sqlDateTime == System.DBNull.Value)
? (DateTime?)null
: Convert.ToDateTime(sqlDateTime);
dtDateReceived.Value = sqlDateTime;
}
}
dr.Close();
cmd.Dispose();
conn.Close();
这是我用于获取 table1 中的dateReceived的代码,考虑到dateReceived列上的值可能为空。
我想以Windows窗体的datetimepicker显示它,但出现错误:
无法将类型'object'隐式转换为System.DateTime
我想要的只是将值(如果不为null)显示在datetimepicker控件上。如果为null,则什么也不会发生。
答案 0 :(得分:0)
您可以使用
var dateTime = dr[0] as DateTime;
它将返回null或日期时间。
答案 1 :(得分:0)
您可以使用此:
static async void Main(string[] args)
{
SqlConnection connection = new SqlConnection();
SqlCommand command = new SqlCommand("", connection);
SqlDataReader reader = command.ExecuteReader();
while (await reader.ReadAsync())
{
if (reader.IsDBNull("columnName"))
{
throw new SqlNullValueException("Value in columnName is null");
}
else { }
}
}
答案 2 :(得分:-1)
而不是
object sqlDateTime = dr[0];
DateTime? dt = (sqlDateTime == System.DBNull.Value)
? (DateTime?)null
: Convert.ToDateTime(sqlDateTime);
使用
var dateTime = dr[0] != System.DBNull.Value
? (DateTime?)dr.GetDateTime(0) // parse the sql datetime and returns CLR DateTime
: (DateTime?)null;
答案 3 :(得分:-1)
您可以像使用#include <iostream>
#include <Eigen/Core>
using namespace Eigen;
int main()
{
typedef VectorXcf T;
T mat(10);
const T& matConstRef = mat;
T* nc = const_cast<T*>(&matConstRef);
nc->setConstant(T::Scalar(3.4));
std::cout << *nc << "\n\n";
Map<T> map = Map<T>(const_cast<T::Scalar*>(matConstRef.data()), matConstRef.rows(), matConstRef.cols());
map << 0, 1, 2, 3, 4, 5, 6, 7, 8, 9;
std::cout << map << "\n\n";
return 0;
}
HasValue
确保您的 while (dr.Read())
{
DateTime? sqlDateTime = dr[0];
DateTime? dt = sqlDateTime.HasValue
? sqlDateTime
:null;
dtDateReceived.Value = dt;
}
可为空