Pergunta

Estou recebendo o erro acima no meu método VS 2008 C# quando tento invocar o procedimento armazenado SQL GetColumnNames de vs. Este SP aceita um parâmetro de entrada, o nome da tabela e funciona com sucesso a partir do SSMS. Atualmente, estou selecionando a tabela AdventureWorks Endereço para puxar os nomes das colunas desta tabela. Eu posso ver a tabela AventureWorks disponível no VS no meu servidor Explorer / Data Connection. E vejo a tabela de endereços e o getColumnNames SP aparecendo no Server Explorer.

Mas ainda estou recebendo esse erro listado acima. Aqui está o snippet de código C# que eu uso para executar isso:

public static datatable displayTableColumns (string tt) {sqldatareader dr = null; String tableName = tt; String Connstring = "Fonte de dados =.; AnextDBFilename = " C: Arquivos de Programas Microsoft SQL Server msSql10.mssqlserver mssql data Adventureworks_data.mdf "; catalog inicial = aventura; 30; instância do usuário = false "; string errorMsg; SqlConnection Conn2 = novo 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 eu examino o errorMsg, diz o seguinte:

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

em system.data.sqlclient.sqlinernalConnection.onerror (exceção do SQLEXCECTION, BOOLEAN BreakConnection) r n
em system.data.sqlclient.tdsparser.throwexceptionAndWarning (TDSPARSERSTATEOBJECT STADOBJ) r n
em system.data.sqlclient.tdsparser.run (runbehavior runbehavior, sqlcommand cmdhandler, sqldatarader datastream, mantelkcopysimpleResultset stelandler, tdsparserstatebjectobj)
em system.data.sqlclient.sqldataReader.consumemetadata () r n
em system.data.sqlclient.sqldataReader.get_metadata () r n
em system.data.sqlclient.sqlCommand.finishishExecuteReader (sqldatareader ds, runbehavior runbehavior, reseção de stringstring) r n n
em system.data.sqlclient.sqlCommand.Runexectedereadertds (CommandBeHavior cmdBeHavior, RunBehavior RunBehavior, Boolean ReturnStream, Boolean Async) r n
em system.data.sqlclient.sqlCommand.RunexecheteReader (CommandBeHavior cmdBeHavior, RunBeHavior RunBeHavior, Boolean ReturnStream, Método String, Dbasyncresult Result) r n N
em system.data.sqlclient.sqlCommand.RunexectecheReader (CommandBeHavior cmdBeHavior, RunBeHavior RunBeHavior, Boolean ReturnStream, String Method) r n n
em system.data.sqlclient.sqlCommand.execheteReader (comportamento CommandBeHavior, método de string) r n em system.data.sqlclient.sqlCommand.execectereader () r n
em adonet_namespace.adonet_methods.displaytableColumns (string tt) em c: documentos e configurações admin my documents visual studio 2008 Projects addFileToSql addFileTosql adonet métodos.c: linha 35 "

Onde a linha 35 é

dr = cmd.executerEader ();

Foi útil?

Solução

Eu rapidamente verifiquei o AdventureWorks Database e vejo que a tabela "endereço" pertence ao esquema "pessoa". Tente passar "Person.addressType" como o valor do valor do parâmetro de comando no código.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top