SQL无效的对象名称地址类型“

问题描述:

我得到我的VS 2008的C#方法上面的错误,当我尝试调用SQL getColumnNames从VS.存储过程该SP接受一个输入参数,表名称,并从SSMS成功运行。目前,我正在选择AdventureWorks AddressType表来从该表中提取列名。我可以从我的服务器资源管理器/数据连接中看到VS中可用的AdventureWorks表格。我看到服务器资源管理器中显示的AddressType表和getColumnNames SP。SQL无效的对象名称地址类型“

但我仍然得到上面列出的这个错误。这里是我用来执行此操作的C#代码片段:

public static DataTable DisplayTableColumns(string tt) SqlDataReader dr = null; string TableName = tt; 字符串CONNSTRING = “数据源=; AttachDbFilename = \” C:\ Program Files文件\ Microsoft SQL Server的\ MSSQL10.MSSQLSERVER \ MSSQL \ DATA \ AdventureWorks_Data.mdf \“;初始目录= AdventureWorks的;集成安全性= TRUE;连接超时= 30; User Instance = False“; string 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
在系统.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)\ r \ n
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior,SqlCommand cmdHandler,SqlDataReader dataStream,BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj)\ r \ n
在System.Data.SqlClient.SqlDataReader.ConsumeMetaData(个)\ r \ n
在System.Data.SqlClient.SqlDataReader.get_MetaData(个)\ r \ n
在System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader的DS,RunBehavior runBehavior,字符串resetOptionsString个)\ r \ n
在System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(的CommandBehavior cmdBehavior,RunBehavior runBehavior,布尔returnStream,布尔异步个)\ r \ n
在System.Data.SqlClient的。 SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior,RunBehavior runBehavior,Boolean returnStream,String method,DbAsyncResult result)\ r \ n
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavio r cmdBehavior,RunBehavior runBehavior,Boolean returnStream,String方法)\ r \ n
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior,String method)\ r \ n at System.Data.SqlClient.SqlCommand.ExecuteReader( )\ r \ n
at ADONET_namespace.ADONET_methods.DisplayTableColumns(String tt)in C:\ Documents and Settings \ Admin \ My Documents \ Visual Studio 2008 \ Projects \ AddFileToSQL \ AddFileToSQL \ ADONET methods.cs:line 35“

其中线35是

DR = cmd.ExecuteReader();

我快速检查了AdventureWorks数据库,并看到表“AddressType”属于模式“Person”。尝试传递“Person.AddressType”作为代码中命令参数值的值。

+0

非常棒,Ashish!这是问题! – salvationishere 2010-04-07 21:22:14