Domanda

Sto ottenendo l'errore precedente nel mio metodo di VS 2008 C # quando provo a invocare le getColumnNames SQL stored procedure da VS. Questo SP accetta un parametro di input, il nome della tabella, e lavora con successo da SSMS. Attualmente sto selezionando la tabella AdventureWorks AddressType per poter tirare i nomi delle colonne da questa tabella. Posso vedere teh tabella AdventureWorks disponibili in VS dalla mia connessione Esplora server / Data. E vedo sia la tabella AddressType e getColumnNames SP mostrando in Esplora server.

Ma ancora sto ottenendo questo errore di cui sopra. Ecco il codice C # frammento che uso per eseguire questo:

DisplayTableColumns DataTable public static (stringa TT)     {         SqlDataReader dr = null;         stringa TableName = tt;         stringa CONNSTRING = "origine dati = .; AttachDbFilename = \" C: \ Programmi \ Microsoft SQL Server \ MSSQL10.MSSQLSERVER \ MSSQL \ DATA \ AdventureWorks_Data.mdf \ "; iniziale Catalogo = AdventureWorks; Integrated Security = True; Timeout connessione = 30; User instance = false ";         stringa errorMsg;         SqlConnection CONN2 = new SqlConnection (CONNSTRING);         SqlCommand cmd = conn2.CreateCommand ();

    try
    {
        cmd.CommandText = "dbo.getColumnNames";
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Connection = conn2;
        SqlParameter parm = new SqlParameter("@TableName", SqlDbType.VarChar);
        parm.Value = TableName;
        parm.Direction = ParameterDirection.Input;
        cmd.Parameters.Add(parm);
        conn2.Open();
        dr = cmd.ExecuteReader();
    }
    catch (Exception ex)
    {
        errorMsg = ex.Message;
    }

E quando esamino l'errorMsg dice il seguente:

"   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)\r\n   

a System.Data.SqlClient.SqlInternalConnection.OnError (eccezione SqlException, breakConnection booleano) \ r \ n
a System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning (stateObj TdsParserStateObject) \ r \ n
a System.Data.SqlClient.TdsParser.Run (runBehavior RunBehavior, SqlCommand cmdHandler, SqlDataReader datastream, bulkCopyHandler BulkCopySimpleResultSet, stateObj TdsParserStateObject) \ r \ n
a System.Data.SqlClient.SqlDataReader.ConsumeMetaData () \ r \ n
a System.Data.SqlClient.SqlDataReader.get_MetaData () \ r \ n
a System.Data.SqlClient.SqlCommand.FinishExecuteReader (ds SqlDataReader runBehavior runBehavior, String resetOptionsString) \ r \ n
a System.Data.SqlClient.SqlCommand.RunExecuteReaderTds (cmdBehavior CommandBehavior, runBehavior runBehavior, returnStream booleano, booleano asincrona) \ r \ n
a System.Data.SqlClient.SqlCommand.RunExecuteReader (cmdBehavior CommandBehavior, runBehavior RunBehavior, returnStream booleano, il metodo String, risultato DbAsyncResult) \ r \ n
a System.Data.SqlClient.SqlCommand.RunExecuteReader (cmdBehavior CommandBehavior, runBehavior RunBehavior, returnStream booleano, il metodo String) \ r \ n
a System.Data.SqlClient.SqlCommand.ExecuteReader (comportamento CommandBehavior, metodo String) \ r \ n al System.Data.SqlClient.SqlCommand.ExecuteReader () \ r \ n
a ADONET_namespace.ADONET_methods.DisplayTableColumns (String TT) in C: \ Documents and Settings \ Admin \ Documenti \ Visual Studio 2008 \ Projects \ AddFileToSQL \ AddFileToSQL \ Adonet methods.cs: linea 35"

Dove linea 35 è

  

dr = cmd.ExecuteReader ();

È stato utile?

Soluzione

Ho subito controllato database AdventureWorks e vedere che la tabella "AddressType" appartiene allo schema "Persona". Prova a passare "Person.AddressType" come valore del valore del parametro di comando nel codice.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top