Visualizzare tabella sql server e c#

lunedì 24 agosto 2009 - 15.47

devilxx84 Profilo | Newbie

Salve a tutti

Ho creato una console application che interagisce con un database

Vorrei riuscire a stampare a video il contenuto di una tabella indicata da un utente tramite input da tastiera

se faccio con con un data reader:

Console.WriteLine("Quale tabella vuoi aprire?");
string tab;
tab = Console.ReadLine();
string sel = "SELECT * FROM ";
string select = String.Concat(sel, tab);
SqlCommand co = new SqlCommand(select, conn);
SqlDataReader leggi = co.ExecuteReader();

while (leggi.Read())
{

Console.WriteLine(leggi[0]);
Console.ReadLine();

}
leggi.Close();

in questo modo mi stampa solo il primo campo della tabella. se mettessi leggi[1] avrei il secondo campo ecc ecc... per vederli tutti dovrei sapere il numero di campi di ogni singola tabella.
come posso fare per vedere tutta la tabella completa senza conoscere il numero dei campi presenti?

Ho provato anche con una stored procedure

CREATE PROCEDURE (@tabella NCHAR (50))
AS
SELECT * FROM "@tabella"

dove @tabella è un parametro di input impostato da programma cosi come segue:
SqlCommand apri = new SqlCommand("APRITABELLE", conn);
apri.CommandType = CommandType.StoredProcedure;
apri.Parameters.AddWithValue("@tabella", tab);

ma mi viene dato un messaggio di errore
"Il nome di oggetto '@tabella' non è valido"

come posso risolvere?

alx_81 Profilo | Guru

>Salve a tutti
ciao

>in questo modo mi stampa solo il primo campo della tabella. se
>mettessi leggi[1] avrei il secondo campo ecc ecc... per vederli
>tutti dovrei sapere il numero di campi di ogni singola tabella.
>come posso fare per vedere tutta la tabella completa senza conoscere
>il numero dei campi presenti?
con questo:

SQLDataReader.FieldCount
http://msdn.microsoft.com/it-it/library/system.data.sqlclient.sqldatareader.fieldcount%28VS.80%29.aspx

poi dovrai ciclare per scorrere i campi.

>"Il nome di oggetto '@tabella' non è valido"
>come posso risolvere?
non si può fare in quel modo, devi concatenare l'sql in una stringa dinamica e poi eseguirlo con una sp_executesql (http://msdn.microsoft.com/it-it/library/ms188001.aspx)

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
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