2016-09-14 2 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
당신은 한 번에 두 개의 서로 다른 개체 또는 변수를 분리해야한다는 등의 두 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

내가 지금 각 행을 통해 루프를하고있다 .. 당신에 의해 언급 된. 그것은 더 많은 데이터가 있다면 삽입을 구축하는 데 많은 시간이 걸립니다 .. 그래서 내가 직접 datatable에서 삽입을 찾고 있었어 – user1046415

+0

글쎄, 그렇지 않아. 실제로 많은 시간을 의미하는 것을 얻지 만 테이블을 복사하는 더 빠른 방법이 있습니다. ** SqlBulkCopy ** [link] (https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy (v = vs.110) .aspx) –

+0

동의하지만 내 열은 동일하지 않습니다 .. 내가 그들을 매핑하고 그에 따라 데이터를 삽입해야합니다. 벌크 copy.Please 가능한 모든 샘플을 제공 할 수 있습니다 .. 소스는 8 열을 가질 수 있지만 내 목적지 테이블에 10 있어요. 그들을 매핑하고 그에 따라 삽입해야합니다. – user1046415

관련 문제