値を抽出したい SQL の 2 つの列を含むテーブルがあります。問題は、C# コードで列 2 の値を取得する方法がわからないことです。SQL Server 2008 と VS を使用しています。SP で OUTPUT パラメーターを使用する必要がありますか? その場合、この SP をどのように指定しますか? OUTPUT パラメーターを試してみましたが、COLUMN_NAME も選択しようとしているため、エラーなしで OUTPUT パラメーターを作成できません。このクエリから返される列は 4 つあり、この数の列も取得したいだけです。これを行うにはもっと簡単な方法があるはずですよね?これは SQL では機能しますが、C# では機能しません。
ここに私のSPがあります:
CREATE PROCEDURE [dbo].[getColumnNames]
@TableName varchar(25)
AS
SELECT name 'COLUMN_NAME', (
SELECT COUNT(ID)
FROM syscolumns WHERE id = (
SELECT id
FROM sysobjects
WHERE name= @TableName)) 'ROW_COUNT'
FROM syscolumns
WHERE id = (SELECT id FROM sysobjects WHERE name= @TableName)
RETURN
そして、これがこの SP を呼び出す私の C# コードです。
public static SqlDataReader DisplayTableColumns(string tt)
{
SqlDataReader dr = null;
string TableName = tt;
string connString = "Data Source=.;AttachDbFilename=\"C:\\Program Files\\Microsoft SQL Server\\...";
string errorMsg;
try
{
SqlConnection conn2 = new SqlConnection(connString);
SqlCommand cmd = conn2.CreateCommand();
cmd.CommandText = "dbo.getColumnNames";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = conn2;
cmd.Parameters.Add(new SqlParameter("@TableName", TableName));
conn2.Open();
dr = cmd.ExecuteReader();
}
catch (Exception ex)
{
errorMsg = ex.Message;
}
return dr;
}