Неверное имя объекта SQL 'AddressType' - PullRequest
1 голос
/ 07 апреля 2010

Я получаю вышеуказанную ошибку в своем методе VS 2008 C #, когда пытаюсь вызвать хранимую процедуру getColumnNames SQL из VS.Этот SP принимает один входной параметр, имя таблицы и успешно работает из SSMS.В настоящее время я выбираю для этого таблицу AddressType AdventureWorks, чтобы извлечь имена столбцов из этой таблицы.Я вижу таблицу AdventureWorks, доступную в VS, из моего обозревателя серверов / подключения к данным.И я вижу и таблицу AddressType, и getColumnNames SP, отображаемые в обозревателе серверов.

Но я все еще получаю эту ошибку, перечисленную выше.Вот фрагмент кода C #, который я использую для выполнения этого:

public static DataTable DisplayTableColumns (string tt) {SqlDataReader dr = null;строка TableName = tt;string connString = "Источник данных =; AttachDbFilename = \" C: \ Program Files \ Microsoft SQL Server \ MSSQL10.MSSQLSERVER \ MSSQL \ DATA \ AdventureWorks_Data.mdf \ "; Начальный каталог = AdventureWorks; Интегрированная безопасность = True; Время ожидания подключения =30; пользовательский экземпляр = False ";строка errorMsg;SqlConnection conn2 = новый 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;
    }

И когда я проверяю errorMsg, он говорит следующее:

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

в System.Data.SqlClient.SqlInternalConnection.OnError (SqlExceptionисключение, логическое значение breakConnection) \ r \ n
в System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning (TdsParserStateObject stateObj) \ r \ n
в System.Data.SqlClient.TdsParser.Run (RunBehhomSqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) \ r \ n
в System.Data.SqlClient.SqlDataReader.ConsumeMetaData () \ r \ n
класса_каталог_данных_каталогов.каталог_данных_данных_данных_данных.Дата_Data.Ratn
в System.Data.SqlClient.SqlCommand.FinishExecuteReader (SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) \ r \ n
в System.Data.SqlClient.SqlCehaeBeh, Логическое асинхронное) \ r \ n
в System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, RunBehavior runBehavior, логическое значение returnStream, метод String, результат DbAsyncResult) \ r \ n
в System.Data.SqlClient.SqlCommand.RunExhater \ n
в System.Data.SqlClient.SqlCommand.ExecuteReader (поведение CommandBehavior, метод String) \ r \ n в System.Data.SqlClient.SqlCommand.ExecuteReader () \ r \ n
в ADONET_namespace.ADONET_.DisplayTableColumns (String tt) в C: \ Documents and Settings \ Admin \ Мои документы \ Visual Studio 2008 \ Projects \ AddFileToSQL \ AddFileToSQL \ ADONET method.cs: строка 35 "

Где строка 35 равна

dr = cmd.ExecuteReader ();

1 Ответ

1 голос
/ 07 апреля 2010

Я быстро проверил базу данных AdventureWorks и увидел, что таблица «AddressType» принадлежит схеме «Person». Попробуйте передать «Person.AddressType» в качестве значения параметра команды в коде.

...