1

-質問を別のより単純な形式に変更しました-

このコードを確認してください:

「与えられたエラー」 エラー:

アップデートで TableMapping['Table'] または DataTable 'Table' が見つかりません。

DataSet は厳密に型指定されています。DataTable "dtNew" があります [リスト "ListProducts" から作成されています (ここは関係ありません!)]

データベース内の 1 つの列の名前がリストのフィールドと異なります: "Title" は次の列にマップする必要があります: "TitleInDb"

SqlCeDataAdapter Adapter;
DsProducts Ds1Products ; // Strongly Typed
DataTable dtNew = new DataTable("Products");
DataColumn dc;
DataRow[] updRows;
// Fields : Name , Title, Price

dc = new DataColumn("Name", typeof(string));
dtNew.Columns.Add(dc);
dc = new DataColumn("TitleInDb", typeof(string)); // The difference is by a reason
dtNew.Columns.Add(dc);
dc = new DataColumn("Price", typeof(string));
dtNew.Columns.Add(dc);
dtNew = updRows.CopyToDataTable();
Ds1Products.Tables.Add(dtNew);

// The Problems appear here :
// The Iteration is just for debugging phase and watching the changes which the columns are same 
   as before
foreach (var col in dtNew.Columns)
{
    Console.WriteLine(col.ToString());
    Console.WriteLine(col.GetType());
}

// New Table is there, But here will come the Error
Adapter.Update(Ds1Products);

これを実行し、新しい列を反復処理すると、その時点で削除されるべきだと思っていた "Products" テーブルに変更がないことがわかります。また、新しいテーブルの名前"dtNew""table1"

追記事項 : Sql Compact 3.5 を使用してい ます コードは単なるコードの一部です. 正確な問題を示しています !

コードを確認して、これに関するアイデアを提供してください。更新されたテーブル (または DataRows[] ) に基づいてデータベース全体を作成しようとしています。

編集: * DataSet 内の DataTable を置き換えます: * 最初の DataTable を削除し、新しいものを作成して ! に配置することを意味します。簡単に言えませんでした...(コメントに基づく)

4

0 に答える 0