C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: DataAdapterの扱い


(過去ログ 95 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■56508 / inTopicNo.1)  DataAdapterの扱い
  
□投稿者/ tecc (11回)-(2011/01/17(Mon) 16:51:36)

分類:[.NET 全般] 

        public System.Data.DataTable ReturnDataTable
        (string query, string dataMember)
        {
            cmd.CommandText = query;
            cmd.CommandType = System.Data.CommandType.Text;
            using (OleDbDataAdapter oda = new OleDbDataAdapter(cmd.CommandText, Cnn))
            {
                using (System.Data.DataSet da = new System.Data.DataSet())
                {
                    try
                    {
                        oda.Fill(da, dataMember);
                        System.Data.DataTable dt = new System.Data.DataTable();
                        dt = da.Tables[dataMember].Copy();
                        return dt;
                    }
                    catch (OracleException oex)
                    {
                        Console.WriteLine(string.Format("Execute Error:{0}", oex.Message.ToString()));
                        throw;
                    }
                }
            }
        }
	///test
        public void DataBaseUpdate(System.Data.DataTable dt)
        {
            using (OleDbDataAdapter oda = new OleDbDataAdapter())
            {
                try
                {
                    using (OleDbCommandBuilder ocb = new OleDbCommandBuilder(oda))
                    {
                        oda.Update(dt);
                    }
                }
                catch (OleDbException oex)
                {
                    Console.WriteLine(string.Format("Execute Error:{0}", oex.Message.ToString()));
                    throw;
                }
            }
        }

このようなメソッドを作成しました。このクラスは他にデータベースへの接続制御等を行っています。
そこで質問なのですが、DataBaseUpdateメソッドにてACCESSのデータベースに
一括でDataTableのデータを丸々登録させるようにはできたりしますか?
またこの時、重複しているデータを判別しそれらはUPDATEしたいです。
やり方があれば教えて下さい。

引用返信 編集キー/
■56511 / inTopicNo.2)  Re[1]: DataAdapterの扱い
□投稿者/ shu (363回)-(2011/01/17(Mon) 17:49:30)
No56508 (tecc さん) に返信

意味のない処理を行っているところがたくさんあるのですが、各処理をよく確認された方がよいです。
例えば

> oda.Fill(da, dataMember);
> System.Data.DataTable dt = new System.Data.DataTable();
> dt = da.Tables[dataMember].Copy();
DataTable dtをnewする意味がありません。(次ですぐ代入を行っているので)
Copyする意味がありません。(Copyの元がすぐなくなってしまうので)


> このようなメソッドを作成しました。このクラスは他にデータベースへの接続制御等を行っています。
> そこで質問なのですが、DataBaseUpdateメソッドにてACCESSのデータベースに
> 一括でDataTableのデータを丸々登録させるようにはできたりしますか?
手順を踏めばDataTableの各Datarowに対して行った処理によりInsert, Update, Deleteが行われます。


> またこの時、重複しているデータを判別しそれらはUPDATEしたいです。
> やり方があれば教えて下さい。
DataAdapter.Fillで持ってきたDataTableの中を直接更新しないで、別テーブルで編集しといて
自前で比較を行う必要があるかと思います。


引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -