2011-06-14 13 views
10

Tengo el siguiente código que se conecta a una base de datos y almacena los datos en un conjunto de datos..NET - ¿Cómo recupero elementos específicos de un Dataset?

Lo que hay que hacer ahora es obtener un único valor del conjunto de datos (bueno en realidad sus dos la primera fila la columna 4 y 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) 

Por lo tanto, tienen que conseguir dos artículos específicos y almacenar ellos en enteros, el código psudo sería

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

¿Alguna idea sobre cómo puedo hacer esto?

Además, puede alguien arrojar luz sobre las tablas de datos también, ya que esto puede estar relacionado con la forma en que voy a hacer esto.

Respuesta

22

Puede hacer como ...

Si desea acceder utilizando ColumnName

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

O, si se quiere acceder utilizando Index

Int32 First = Convert.ToInt32(ds.Tables[0].Rows[0][4].ToString()); 
Int32 Second = Convert.ToInt32(ds.Tables[0].Rows[0][5].ToString()); 
+1

@Muhammad Akhtar estoy teniendo un pequeño problema con la 2da variable, en el conjunto de datos la variable es un doble, creo que se muestra como (4.0000) cómo cambiaría eso a un int # – c11ada

+0

En el código Lo he convertido en Int, debes ver el valor 4 en vez de 4.0000; Depurar y verificar el valor de la variable. –

+0

me sale el siguiente error {"La cadena de entrada no estaba en el formato correcto."} – c11ada

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

le proporcione datos 4ª y 5ª fila. este código no es correcto –

+0

está devolviendo una fila entera e intentando analizarla en un int. –

+0

sí, tiene razón, lo siento –

4

El objeto DataSet tiene una matriz de tablas. Si conoce la tabla que desea, tendrá una matriz Fila, cada objeto del cual tiene una matriz ItemArray. En su caso, es probable que el código sea

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

y así sucesivamente. Esto le daría el 4º artículo en la primera fila. También puede usar columnas en lugar de ItemArray y especificar el nombre de columna como una cadena en lugar de recordar su índice. Ese enfoque puede ser más fácil de seguir si la estructura de la tabla cambia. Por lo que sería

int var1 = int.Parse(ds.Tables[0].Rows[0]["MyColumnName"].ToString()); 
+1

necesita 4ta y 5ta columnas valor en lugar de 4ta y 5ta fila. –

+0

@Muhammad - gracias –

2

Prefiero usar algo como esto:

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

o

int? var1 = ds.Tables[0].Rows[0].Field<int?>(3); //column index 
0
int intVar = (int)ds.Tables[0].Rows[0][n]; // n = column index 
Cuestiones relacionadas