2

ADO.NET を使用してストア プロシージャを実行しています。ストア プロシージャに複数の select ステートメントがあります。DataSet にアクセスすると、テーブルには Table1、Table2 などの名前が付けられます。これらの各テーブルにユーザー フレンド名を付けたいと思います。SQL クエリでテーブル変数または一時テーブルを使用したくありません。他の選択肢はありますか?

次のコードを使用してデータセットを取得しています

SqlCommand cmd = new SqlCommand();
SqlDataAdapter da = new SqlDataAdapter();

DataSet ds = new DataSet();
try
{
    con.ConnectionString = ConfigurationManager.ConnectionStrings["connString"].ConnectionString;
    con.Open();
    cmd = new SqlCommand("sp_GetData", con);
    cmd.Parameters.Add(new SqlParameter("@ParamOne", param));
    cmd.CommandType = CommandType.StoredProcedure;
    da.SelectCommand = cmd;
    da.Fill(ds);

}

これもやりたくない

da.TableMappings.Add("Table", "MyTable1");
da.TableMappings.Add("Table1", "MyTable2");
da.TableMappings.Add("Table2", "MyTable3");

またはこれ

ds.Tables[0].TableName = "NametbA";
ds.Tables[1].TableName = "NametbB";

できれば、SQL クエリで名前を指定したいと思います。このアプローチを使用する理由は、このデータセットをテーブル名をファイルに書き込む関数に渡すためです。

あなたの提案を提供してください。

ありがとうございました

4

2 に答える 2

1

残念ながら自動設定はできません。何らかの方法でコードに提供する必要があります。

1 つのオプションは、結果の構造を変更して、奇数が名前で偶数がデータの 2 倍の結果セットを持つようにすることです。

-- Table name
SELECT 'nameoftable' AS TableName

-- Data
SELECT * FROM ...

c# コード (疑似コードと考えてください):

myDataSet.Tables[1].TableName = myDataSet.Tables[0]["TableName"].ToString();
于 2013-09-01T16:45:59.813 に答える
-1

ADO.Net データセット オブジェクトのテーブル名は、完全に .Net、C# (または vb.net) 固有です。これらは、SQL クエリまたはデータベース内のテーブル名とは関係ありません。単に書くだけで、C#コードでそれらを変更します

 myDataSet.Tables[0].TableName 'WhateverYouWant";
于 2013-09-01T15:34:18.990 に答える