VS から SQL getColumnNames ストアド プロシージャを呼び出そうとすると、VS 2008 C# メソッドで上記のエラーが発生します。この SP は、1 つの入力パラメーター (テーブル名) を受け入れ、SSMS から正常に動作します。現在、AdventureWorks AddressType テーブルを選択して、このテーブルから列名を取得しています。サーバー エクスプローラー/データ接続から VS で使用できる AdventureWorks テーブルを確認できます。サーバー エクスプローラーには、AddressType テーブルと getColumnNames SP の両方が表示されます。
しかし、私はまだ上記のエラーが発生しています。これを実行するために使用する C# コード スニペットを次に示します。
public static DataTable DisplayTableColumns(string tt) { SqlDataReader dr = null; 文字列テーブル名 = tt; string connString = "Data Source=.;AttachDbFilename=\"C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\AdventureWorks_Data.mdf\";初期カタログ=AdventureWorks;統合セキュリティ=True;接続タイムアウト= 30;ユーザー インスタンス = False"; 文字列エラーメッセージ; 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( 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
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)\r\n
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) で\r\n
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult 結果)\r\n
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior、RunBehavior runBehavior、Boolean returnStream、String メソッド) で\r\n
System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior 動作、String メソッド) で)\r\n System.Data.SqlClient.SqlCommand.ExecuteReader() で\r\n
C:\Documents and Settings\Admin\My Documents\Visual Studio 2008\Projects\AddFileToSQL\AddFileToSQL\ADONET methods.cs:line 35 の ADONET_namespace.ADONET_methods.DisplayTableColumns(String tt) で"
35行目の場所
dr = cmd.ExecuteReader();