я попробовал бы:
var dataString = "email="+username+"&password="+password+"&remember="+remember;
Это всего лишь предположение, но если соответствующий тип в базе данных - DateTime, можете ли вы проверить, допускает ли столбец значение NULL?
Если да, то вы можете проверить r ["column"] == DBNull.Value
, а затем передать его в DateTime, допускающий значение NULL? Поле.
Или еще проще:
row.Field<DateTime?>("column")
Если это не так, то да, Convert.ToDateTime () или что-то еще должно это сделать.
РЕДАКТИРОВАТЬ:
Я вижу ваш последний код там, но есть ли шанс, что вы захотите это сделать:
DateTime? firstIssueDate = r.Field<DateTime?>("fiss");
DateTime? endIssueDate = r.Field<DateTime?>("eiss");
if (firstIssueDate.HasValue && endIssueDate.HasValue)
{
firstIssueDate.Value // blah blah
endIssueDate.Value // blah blah
}
foreach (DataRow r in ds.Tables[0].Rows)
{
string prodCode = r["PRD-CDE"].ToString();
string statCode = r["STAT"].ToString();
DateTime firstIssueDate = DateTime.Parse((r["FISS"]).ToString());
DateTime endIssueDate = DateTime.Parse((r["EISS"]).ToString());
if(endIssueDate > DateTime.Now)
{ /*do some thing...*/}
else {/*user invalid...*/}
}
This should compile and may work for you. Though it is certainly not performing any error checking that you should do for production code. Also look into DateTime.TryParse and you may to look into adding a IFormatProvider to ensure the format is parsed as expected.
Если вы хотите использовать значение по умолчанию (например, DateTime.MinValue), а не null (DateTime?) Или DBNull, вы можете сделать это:
var firstIssueDate = r["FISS"] as DateTime? ?? DateTime.MinValue;
var endIssueDate = r["EISS"] as DateTime? ?? DateTime.MinValue;
I would recommend using DateTime.Parse() if the row is returning a string for that index.
string prodCode = r["PRD-CDE"].ToString(),statCode = r["STAT"].ToString();
DateTime firstIssueDate = DateTime.Parse(r["FISS"].ToString());
DateTime endIssueDate = DateTime.Parse(r["EISS"].ToString());
You could also use TryParse
depending on your needs.
First of all, do r["FISS"].GetType() and print it to console (or pause and look at it in the debugger). If it says it's a String, then most of the above advices will help. If it says something else, please come back and update your question.
В качестве дополнительного ответа вы также можете использовать статическую функцию Convert.ToDateTime
If you have a DateTime string with a special format (not any standard .NET DateTime format) that needs to be converted to .NET DateTime type, you can use DateTime.ParseExact()
method.
Please see the MSDN document for more details including examples.
If you have multiple formats to parse, try DateTime.ParseExact Method (String, String[], IFormatProvider, DateTimeStyles)
DateTime.Parse (r ["FISS"]. ToString ()) - это способ пойти, но он выдает ошибку «Строка не была распознана как допустимый DateTime». Не могли бы вы показать фактическую строку в столбце r ["FISS"], возможно, это проблема интернационализации ....