.NET - Как я могу получить определенные элементы из набора данных? - PullRequest
11 голосов
/ 14 июня 2011

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

Теперь мне нужно получить одно значение из набора данных (ну, на самом деле, это две первые строкистолбцы 4 и 5)

OdbcConnection conn = new OdbcConnection();
    conn.ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString2"].ConnectionString;

    DataSet ds = new DataSet();

    OdbcDataAdapter da = new OdbcDataAdapter("SELECT * FROM MTD_FIGURE_VIEW1", conn);

    da.Fill(ds)

Итак, мне нужно получить два конкретных элемента и сохранить их в целых числах, псевдокод будет иметь вид

int var1 = ds.row1.column4
int var2 = ds.row1.column5

.this?

Кроме того, может ли кто-нибудь пролить свет на таблицы данных, так как это может быть связано с тем, как я собираюсь это делать.

Ответы [ 5 ]

27 голосов
/ 14 июня 2011

Вы можете сделать как ...

Если вы хотите получить доступ с помощью ColumnName

Int32 First = Convert.ToInt32(ds.Tables[0].Rows[0]["column4Name"].ToString());
Int32 Second = Convert.ToInt32(ds.Tables[0].Rows[0]["column5Name"].ToString());

ИЛИ, если вы хотите получить доступ с помощью Index

Int32 First = Convert.ToInt32(ds.Tables[0].Rows[0][4].ToString());
Int32 Second = Convert.ToInt32(ds.Tables[0].Rows[0][5].ToString());
4 голосов
/ 14 июня 2011

Объект DataSet имеет массив таблиц.Если вы знаете таблицу, которую хотите, у нее будет массив Row, каждый объект которого имеет массив ItemArray.В вашем случае код, скорее всего, будет

int var1 = int.Parse(ds.Tables[0].Rows[0].ItemArray[4].ToString());

и так далее.Это даст вам 4-й предмет в первом ряду.Вы также можете использовать Столбцы вместо ItemArray и указать имя столбца в виде строки вместо запоминания его индекса.С этим подходом будет легче справиться, если структура таблицы изменится.Так что это будет

int var1 = int.Parse(ds.Tables[0].Rows[0]["MyColumnName"].ToString());
2 голосов
/ 14 июня 2011

Я предпочитаю использовать что-то вроде этого:

int? var1 = ds.Tables[0].Rows[0].Field<int?>("ColumnName");

или

int? var1 = ds.Tables[0].Rows[0].Field<int?>(3);   //column index
0 голосов
/ 16 октября 2014
int intVar = (int)ds.Tables[0].Rows[0][n];   // n = column index
0 голосов
/ 14 июня 2011
int var1 = int.Parse(ds.Tables[0].Rows[0][3].ToString());
int var2 = int.Parse(ds.Tables[0].Rows[0][4].ToString());
...