[VB.Net] DataType di una DataColumn

martedì 19 febbraio 2008 - 13.00

Bacca Profilo | Newbie

Io ho un problema con una DataTable:
Aggiungo una colonna (Index) in runtime ad una DataTable e successivamente eseguo una SELECT facendomi restituire tutte le datarow ma ordinate attraverso la la colonna index.

Successivamente ho provato ad osservare il risultato ed è il seguente:
index = 0
index = 1
index = 11
index = 12
..
index = 19
index = 2
ecc...

come faccio a definire Integer gli elementi della colonna cosìcchè vengano confrontati correttamente?

Ho visto che la colonna ha il dataType ma non riesco ad usarlo...

freeteo Profilo | Guru

ciao,
quando aggiungi una colonna, puoi specificargli anche il tipo, con un overload nel costruttore.
Il tipo è .net, ci pensa il framework a fare una "mappatura" con un tipo "tipico del database".Il codice è questo:

DataTable table = new DataTable(); table.Columns.Add("indice", typeof(int)); table.Columns.Add("testo", typeof(string));


non so come mai non usi un codice di riempimento della DataTable diretto tipo:
public static DataTable RunQuery(string query) { DataTable tabella = new DataTable(); using (SqlConnection conn = new SqlConnection(@"...")) { SqlCommand command = conn.CreateCommand(); command.CommandText = query; conn.Open(); SqlDataReader reader = command.ExecuteReader(); tabella.Load(reader); } return tabella; }

o cmq OledbConnection etc...facendo cosi' si arrangia lui a mappare i tipi corretti prendendoli dal db...


ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

Bacca Profilo | Newbie

>ciao,
>quando aggiungi una colonna, puoi specificargli anche il tipo,
>con un overload nel costruttore.
>Il tipo è .net, ci pensa il framework a fare una "mappatura"
>con un tipo "tipico del database".Il codice è questo:
>
> DataTable table = new DataTable();
> table.Columns.Add("indice", typeof(int));
> table.Columns.Add("testo", typeof(string));
>

Grazie mille,
in effetti ho fatto una cosa simile a questa, ovvero ho costruito una colonna, gli ho assegnato le proprietà e poi l'ho aggiunta.


>non so come mai non usi un codice di riempimento della DataTable
>diretto tipo:
>
>public static DataTable RunQuery(string query)
>{
> DataTable tabella = new DataTable();
>
> using (SqlConnection conn = new SqlConnection(@"..."))
> {
> SqlCommand command = conn.CreateCommand();
> command.CommandText = query;
>
> conn.Open();
>
> SqlDataReader reader = command.ExecuteReader();
> tabella.Load(reader);
> }
>
> return tabella;
>}
>
>
>
>o cmq OledbConnection etc...facendo cosi' si arrangia lui a mappare
>i tipi corretti prendendoli dal db...
>

In effetti dovrei farlo, però mi appoggio ad un file xml e quando lo leggo creo un oggetto con proprietà che vanno a leggere il dataset. Tra le proprietà c'è una lista di altri oggetti, nella tabella volevo mostrare solo alcune delle proprietà di quest'altro oggetto.
Avendo già gli oggetti evito di fare query complesse all'xml.

Cmq grazie ancora!

Ciao
Andrea
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5