Вытащить данные из объекта DateTime, который находится внутри DataRow? - PullRequest
1 голос
/ 12 июля 2011

У меня есть небольшое приложение, которое подключается к базе данных Oracle, в которой хранятся завершения курса для учебного класса. В базе данных есть имена сотрудников, номера сотрудников, дата окончания курса и название курса. У меня есть код, который возвращает одну строку, показанную ниже:

            String strPerIdNo = textBox1.Text;
            String strQuery = "PER_ID_NO = " + "'" + strPerIdNo + "'";
            DataRow[] foundRows;
            foundRows = dataSet1.DataTable1.Select(strQuery);

Строка содержит массив из 5 элементов:

  • [0] - объект System.DateTime
  • [1] - строковый объект
  • [2] - Int объект
  • [3] - строковый объект
  • [4] - строковый объект

Я хочу создать экземпляр объекта DateTime из объекта DateTime в массиве в [0], но не могу понять, как это сделать. Я хочу отобразить сообщение, содержащее имя emp и дату окончания курса.

Спасибо!

Ответы [ 2 ]

3 голосов
/ 12 июля 2011

Хорошо, во-первых, вы ничего здесь не создаете, потому что нужный вам DateTime уже существует (иначе он не будет в DataRow!).Кроме того, DateTime является типом значения, а не ссылочным типом;ненормально думать о создании экземпляра типа значения;Вы просто инициализируете или копируете их.

Вам нужно получить значение элемента DateTime в вашей DataRow.Вот шаги:

//step 0: make sure there's at least one DataRow in your results
if (foundRows.Length < 1) { /* handle it */ }

//step 1: get the first DataRow in your results, since you're sure there's one
DataRow row = foundRows[0];

//step 2: get the DateTime out of there
object possibleDate = row["TheNameOfTheDateColumn"];

//step 3: deal with what happens if it's null in the database
if (possibleDate == DBNull.Value) { /* handle it */ }

//step 4: possibleDate isn't a DateTime - let's turn it into one.
DateTime date = (DateTime)possibleDate;
1 голос
/ 12 июля 2011

Если это объект DateTime, то почему бы просто не привести его? Как

foreach(DataRow row in foundRows) {
    var dt = (DateTime)row[0];
}
...