
No.1ベストアンサー
- 回答日時:
確認ですが、
・使っているデータベースは何ですか?
(SQL Server or Oracle or Access or その他?)
・DBの接続方法には、何を使ってますか?
(SqlClient? OleDb?)
・コピー元のDataSetは、型付DataSet?型無しDataSet?
・C# + ASP.NET でという話で宜しいでしょうか?
(ASP.NETで質問されていますが、質問内容みると、C#という
分類での質問になり、ASP.NETではないような気がします)
少々情報が足りないので、回答が的外れになるかもしれませんが、
どのDB&接続方法にしても、名前空間とクラス名が違うだけで
基本ロジック自体は、ほぼ一緒のため、
下記、型付きDataSetで、SQL Serverの例で、サンプル記載しておきます。
もし、SQL Serverじゃない&型無しDataSetの場合だったり、
どう応用したらいいかわからないという場合は、また質問して下さい。
#############################################################
// コピー元のDataTableを取得
DataTable d = コピー元DataTableを取得;
// データベースの接続
//(本来であれば、web.configやapp.configに設定されている接続先を取得する方法が望ましいわけで...)
System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection("Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=DB名;Data Source=DBサーバのIPアドレス");
conn.Open();
// コピー元のデータ数分だけループ
foreach (DataRow row in d.Rows)
{
// INSERT用SQLを生成
System.Text.StringBuilder sql = new System.Text.StringBuilder();
sql.Append("INSERT INTO [コピー先のスキーマ].[コピー先テーブル名] ");
// INSERT項目
System.Text.StringBuilder insertColumns = new System.Text.StringBuilder();
// INSERT値
System.Text.StringBuilder valueColumns = new System.Text.StringBuilder();
// DataTableの列数分だけループ
foreach (DataColumn col in d.Columns)
{
insertColumns.AppendFormat("{0},", col.ColumnName);
// 列の型が文字列型の場合
if (col.DataType == typeof(String))
{
valueColumns.AppendFormat("'{0}',", row[col.ColumnName].ToString());
}
else
{
// 列の型が文字列型以外の場合
valueColumns.AppendFormat("{0},", row[col.ColumnName].ToString());
}
}
// 不要な「,」を削除
insertColumns.Remove(insertColumns.Length - 1, 1);
valueColumns.Remove(valueColumns.Length - 1, 1);
// INSERT用SQL文の生成
sql.AppendFormat("({0}) VALUES ({1})", insertColumns.ToString(), valueColumns.ToString());
// SQLの実行
System.Data.OleDb.OleDbCommand command;
command = new System.Data.OleDb.OleDbCommand(sql.ToString(), conn);
command.ExecuteNonQuery();
command.Dispose();
command = null;
}
// DBの接続を閉じる
conn.Close();
conn.Dispose();
conn = null;
結局SQLのINSERT文で一気にデータを送りました。
長いソースを書いて説明して頂き、今後の参考にしたいと思います。
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL mysqlで INSERT と SELECTの用途は 1 2022/04/01 00:45
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- PHP プログラムコードを入力する場合改行してもいいですか? 2 2022/10/02 16:05
- MySQL 下の画像はSQLの4大命令の性質をまとめたものであるらしいです UPDATE INSERT DELE 1 2023/06/07 15:36
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- MySQL 次の時間帯の勝率の合計を求めるSQL文 1 2023/07/04 17:12
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- Visual Basic(VBA) VBA シート間の転記で、条件の追加コードの書き方について教えて下さい。 13 2023/02/26 09:31
- PHP php エラー 2 2022/10/23 16:43
このQ&Aを見た人はこんなQ&Aも見ています
-
ACCESSで一括処理する方法
その他(データベース)
-
「指定されたキャストは有効ではありません。」とエラーが出てしまいます。
Microsoft ASP
-
DataTableから条件を満たした行を別のDatatableへコピーしたい
その他(プログラミング・Web制作)
-
-
4
CloseとDisposeの違い
Visual Basic(VBA)
-
5
VB.NETでDataTableにデータ追加したい
Visual Basic(VBA)
-
6
FORMが開いているかどうかの確認方法
Visual Basic(VBA)
-
7
「タイプ初期化子が例外をスローしました」エラー何?
Visual Basic(VBA)
-
8
【DB】同じトランザクション内でupdateとselectをしたときの結果値
その他(データベース)
-
9
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
10
VB.NET Excelを読み込んでDataTableに格納し、DBにデータをINSERTする
Microsoft ASP
-
11
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
12
文字数に合わせて、コントロールの幅を設定する方法
Visual Basic(VBA)
-
13
DataGridViewでセルクリックイベントを発生させるには
Visual Basic(VBA)
-
14
DataGridViewにてセル以外をクリックしたか判別
Visual Basic(VBA)
-
15
DataGridViewの、選択されている行を取り出したい
Visual Basic(VBA)
-
16
SQLで列名を変数にできないでしょうか
SQL Server
-
17
INSERT文でフィールドの1つだけを他のテーブルから取ってきた値を入れたい
その他(データベース)
-
18
DataGridViewの内容をDBに反映する時
Visual Basic(VBA)
-
19
データグリッドビューの一番最初の行に列を追加したい
Visual Basic(VBA)
-
20
ピクチャーボックスの大きさに合わせて画像を表示
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access VBAから使用したExcelプ...
-
Eclipseのコード入力時の、行コ...
-
C++言語で、構造体のコピーは可...
-
vector操作でコピーコンストラ...
-
Activesheet.Pasteで困っています
-
マウントしたディスクにcpで、...
-
Ctrl + Cなど複数の入力キー...
-
他プロジェクトのFormを自プロ...
-
Subversionで作業一段落の作業...
-
arduino unoからデータを読み出...
-
Listviewに表示された文字のコ...
-
エクセルVBA 実行時エラー'...
-
DataTableに入っているデータを...
-
Excel VBA キーワードから列を...
-
OutlookVBAでコピーした文字を...
-
EXCEL VBAで複数行のコピー(...
-
jakarta poiを使用し、EXCELの...
-
CStringArray[2]のコピー
-
Excel: ファイル名になぜ、[...
-
彼女の過去の恋愛に嫉妬してし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access VBAから使用したExcelプ...
-
DataTableに入っているデータを...
-
Eclipseのコード入力時の、行コ...
-
C++言語で、構造体のコピーは可...
-
Ctrl + Cなど複数の入力キー...
-
一行おきに貼り付ける 可能でし...
-
マウントしたディスクにcpで、...
-
Activesheet.Pasteで困っています
-
文字列の切り出し
-
jakarta poiを使用し、EXCELの...
-
Listviewに表示された文字のコ...
-
【UWSC】WEBページ内コピーした...
-
他プロジェクトのFormを自プロ...
-
Excelでコピーしたセル(テキス...
-
エクセルVBA 実行時エラー'...
-
VBScript でサブフォルダも含め...
-
シートに張り付けたボタンがシ...
-
Eclipseでコピーするとき行数な...
-
【再質問】Eclipseのコード入力...
-
バッチで当日日付で作成される...
おすすめ情報