私はSQL Serverデータベース(ビット簡体字)に対してSQL SELECTに基づいてロードDataTable
に対して次の補助機能を持っている:DataTableを満たすSELECTからSQL Server上の元のスキーマを取得する方法?
static private DataTable GetData_(string connectionString, string sqlSelect, bool doFillSchema = false)
{
using (SqlConnection connection = new SqlConnection(connectionString))
using (SqlDataAdapter adapter = new SqlDataAdapter(sqlSelect, connection))
{
DataTable table = new DataTable();
if (doFillSchema)
adapter.FillSchema(table, SchemaType.Mapped);
adapter.Fill(table);
return table;
}
}
以降の目標は、コンテンツをエクスポートする必要があります別の関数に返されtable
を渡すことですDBFテーブル(CREATE TABLEを作成し、エンジンのさまざまな機能に関連するいくつかの修正を含むコンテンツを書き込む)に変換します。
問題は、実装では、オリジナルのnumeric(10, 2)
の列の種類がスキーマのDecimal
に変更されることです。私はオリジナルを保存したいと思います。
私がよく理解していれば、元のスキーマを持つ別のDataTable schemaTable
を取得する必要があります(アダプターによって列の種類が変更される前に)。私の考えは、そのような関数を変更することでした:
static private DataTable GetData_(string connectionString, string sqlSelect,
bool doFillSchema, ref DataTable schemaTable)
{
using (SqlConnection connection = new SqlConnection(connectionString))
using (SqlDataAdapter adapter = new SqlDataAdapter(sqlSelect, connection))
{
DataTable table = new DataTable();
if (doFillSchema)
??? fill the schema table
adapter.Fill(table);
return table;
}
}
どのように機能を実装する必要がありますか?目的のためにSqlDataAdapter
を使用すべきですか?それとも別のやり方ですべきか?