
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
VB.NETでDataTableにデータ追加したい
Visual Basic(VBA)
-
VB.NET Excelを読み込んでDataTableに格納し、DBにデータをINSERTする
Microsoft ASP
-
「指定されたキャストは有効ではありません。」とエラーが出てしまいます。
Microsoft ASP
-
-
4
DataTableから条件を満たした行を別のDatatableへコピーしたい
その他(プログラミング・Web制作)
-
5
DataGridViewの内容をDBに反映する時
Visual Basic(VBA)
-
6
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
7
FORMが開いているかどうかの確認方法
Visual Basic(VBA)
-
8
ACCESSで一括処理する方法
その他(データベース)
-
9
DataGridViewの、選択されている行を取り出したい
Visual Basic(VBA)
-
10
【DB】同じトランザクション内でupdateとselectをしたときの結果値
その他(データベース)
-
11
C# Listを使わずに2次元配列の動的確保をしたいです。
C言語・C++・C#
-
12
文字数に合わせて、コントロールの幅を設定する方法
Visual Basic(VBA)
-
13
DataSetから、DataTableを取得したい。
C言語・C++・C#
-
14
CloseとDisposeの違い
Visual Basic(VBA)
-
15
「タイプ初期化子が例外をスローしました」エラー何?
Visual Basic(VBA)
-
16
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
17
ピクチャーボックスの大きさに合わせて画像を表示
Visual Basic(VBA)
-
18
DataGridViewでセルクリックイベントを発生させるには
Visual Basic(VBA)
-
19
データグリッドビューの一番最初の行に列を追加したい
Visual Basic(VBA)
-
20
Datatableへの代入
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access VBAから使用したExcelプ...
-
一行おきに貼り付ける 可能でし...
-
DataTableに入っているデータを...
-
Activesheet.Pasteで困っています
-
マウントしたディスクにcpで、...
-
C++言語で、構造体のコピーは可...
-
Ctrl + Cなど複数の入力キー...
-
Listviewに表示された文字のコ...
-
Eclipseのコード入力時の、行コ...
-
【UWSC】WEBページ内コピーした...
-
VBScript でサブフォルダも含め...
-
バッチで当日日付で作成される...
-
JP1の質問です。
-
ブラウザからコピペすると文字...
-
【再質問】Eclipseのコード入力...
-
文字列の切り出し
-
シートに張り付けたボタンがシ...
-
arduino unoからデータを読み出...
-
ASP.net でコントロールをコピー
-
他プロジェクトのFormを自プロ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access VBAから使用したExcelプ...
-
Eclipseのコード入力時の、行コ...
-
C++言語で、構造体のコピーは可...
-
一行おきに貼り付ける 可能でし...
-
マウントしたディスクにcpで、...
-
Ctrl + Cなど複数の入力キー...
-
Excelでコピーしたセル(テキス...
-
DataTableに入っているデータを...
-
Listviewに表示された文字のコ...
-
他プロジェクトのFormを自プロ...
-
Activesheet.Pasteで困っています
-
エクセルVBA 実行時エラー'...
-
文字列の切り出し
-
【UWSC】WEBページ内コピーした...
-
jakarta poiを使用し、EXCELの...
-
シートに張り付けたボタンがシ...
-
バッチで当日日付で作成される...
-
arduino unoからデータを読み出...
-
構造体について(配列)
-
ROBOCOPYをスペース付きのフォ...
おすすめ情報