ADO に依存する VB6 データベース中心のアプリケーションを C# に移植しています (ADO.NET に依存しています)。このアプリケーションがアクセスするデータベースのスキーマは任意であり、DbConnection.GetSchema
情報を取得するために依存しています。
私が知る限り (ここで助けが必要です)、GetSchema
ADOX.Catalog を置き換えることになっています。だからここに私が持っているものがあります(フォーマットについて申し訳ありません!):
List<string> temp = new List<string>();
string[] restrictions = new string[4] { null, null, tableName, null };
using (SqlConnection databaseConnection = new SqlConnection(connString))
{
databaseConnection.Open();
foreach (DataRow row in databaseConnection.GetSchema(
SqlClientMetaDataCollectionNames.Columns, restrictions).Rows)
{
temp.Add(row["COLUMN_NAME"] as string);
}
}
temp
という名前のテーブルの列の名前がこれに正しく入力されているという事実を私は知っていますtableName
。ただし、順序は任意のように見えますが、ADOX.Catalog の順序は、Sql Management Studio で見られる順序とまったく同じです。元の方法は次のとおりです。
Dim cat As New ADOX.Catalog
Dim T As ADOX.Table
Dim C As ADOX.Column
Set cat.ActiveConnection = conn
'retrieve list of fields for this table'
Set T = cat.Tables(tableName)
For Each C In T.Columns
temp.Add C.Name
Next
それらはさまざまな順序で出てきますが、どうすればよいかわかりません!
私の質問は基本的に: ADO.NET には GetSchema 以外の ADOX.Catalog の代替品がありますか? そうでない場合、どうすれば GetSchema を注文して、ランダムな順序にならないようにすることができますか (これをひどく使用している同僚を混乱させるでしょう!)