2016-09-14 18 views
0

select * from datatable.Butを使用して特定の列のテーブルに挿入したいのですが、それは私に配列を与えています。 (;あなたのケースではなく、あなたがセミコロンでそれぞれを終了したときにそれは時々許可されています) 試しDatatableすべての行を選択

all I want to do is 
Insert into table1 (id,name,status) select * from datatable 



query += "Insert into " + tableName.ToLower() + ""; 

query += "("; 
for (int i = 0; i < dt.Columns.Count; i++) 
{ 
    if (i != dt.Columns.Count - 1) 
     query += dt.Columns[i].ColumnName.ToLower() + ","; 
    else 
     query += dt.Columns[i].ColumnName.ToLower(); 
} 
query += ")"; 


DataRow[] result = dt.Select(); 

query += "select * from " + result 
+0

は、[テーブル値コンストラクタ]で文(https://msdn.microsoft.com/en-us/library/dd776382を生成しようと、各セルの値を取得します。 aspx)。 –

答えて

0
あなたは一度使用すると、2つの異なるオブジェクトや変数にそれらを分離する必要があることのように2つのSQL文を使用することはできません

     query += "Insert into " + tableName.ToLower() + ""; 

          query += "("; 
          for (int i = 0; i < dt.Columns.Count; i++) 
          { 
           if (i != dt.Columns.Count - 1) 
            query += dt.Columns[i].ColumnName.ToLower() + ","; 
           else 
            query += dt.Columns[i].ColumnName.ToLower(); 
          } 
          query += ")"; 
          query += "values ("; 

          string temQry=query;//you need it more than once 

          DataRow[] result = dt.Select(); 

          for (int i = 0; i < dt.Rows.Count; i++){ 

           for (int j = 0; j < dt.Columns.Count; j++){ 
             if ((j+1)<dt.Columns.Count){ 
              query += result[i].item(j) +"," ; 
              } 
              else { 
              query += result[i].item(j);} 
          } 
             query=temQry; //recover the query for each new row 

}

+0

私は今あなたが言いましたように、各行をループしています。私はもっと多くのデータを持っていれば挿入を構築するのに多くの時間がかかるので、データテーブルから直接挿入することを検討していました – user1046415

+0

本当に何を意味しているのでしょうか、テーブルをコピーする方が早いです。 ** SqlBulkCopy ** [リンク](https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy(v = vs.110).aspx) –

+0

について読んでください。同じではない..私はそれらをマップし、それに応じてデータを挿入する必要があります。バルクコピーで可能ですか?あなたが持っていれば任意のサンプルを提供してください..ソースは8列を持つことができますが、それらをマップし、それに応じて挿入する必要があります.. – user1046415

関連する問題