2016-09-16 9 views
0

宛先データベースで作成されたテーブルの後に次のエラーが発生します。 sqlBulkCopy.WriteToServer(dtCeTask)でエラーを取得します。given ColumnMappingが一致しません

エラー:指定されたColumnMappingがソースまたはデスティネーションのどの列とも一致しません。

using (SqlCeConnection conn = new SqlCeConnection(_connectionString)) 
      { 
       try 
       { 
        conn.Open(); 

        //CETASK 
        DataTable dtCeTask = new DataTable("TempTask"); 
        StringBuilder sqlTask = new StringBuilder(); 

        sqlTask.Append("select StartDate,Status,Priority,Complete, PercentComplete,TimerDuration, ItemLastModified, MatterIdentifier, MatterName, TimeEntryIdentifier, Isrecurring, Originator, createdDate, DisplayName, DisplayText "); 
        sqlTask.Append("from TaskOutlookItemProxy "); 

        using (SqlCeDataAdapter daCeTask = new SqlCeDataAdapter(sqlTask.ToString(), conn)) 
        { daCeTask.Fill(dtCeTask); } 

        using (SqlConnection sqlconnection = new SqlConnection(strConnString)) 
        { 
         sqlconnection.Open(); 

         // create table if not exists 
         string createTableQuery = @"Create Table TempTask1 
         (StartDate datetime, Status nvarchar(255), Priority nvarchar(255), Complete bit, PercentComplete int, TimerDuration int,ItemLastModified DateTime, MatterIdentifier nvarchar(255),MatterName nvarchar(255), TimeEntryIdentifier nvarchar(255), Isrecurring bit, Originator nvarchar(255), createdDate DateTime, DisplayName nvarchar(255), DisplayText nvarchar(255))"; 
         SqlCommand command = new SqlCommand(createTableQuery, sqlconnection); 
         command.ExecuteNonQuery(); 



         // Copy the DataTable to SQL Server Table using SqlBulkCopy 
         using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(sqlconnection)) 
         { 
          sqlBulkCopy.DestinationTableName = dtCeTask.TableName; 

          foreach (var column in dtCeTask.Columns) 
          { 
           sqlBulkCopy.ColumnMappings.Add(column.ToString(), column.ToString()); 
          } 


          sqlBulkCopy.WriteToServer(dtCeTask); 
         } 
        } 

       } 
       catch (Exception ex) 
       { 
        throw (ex); 
       } 
      } 

答えて

0

にColumnMappingsは大文字と小文字が区別されます - これは(blog)の前に私を捕まえていると私はあなたのためのケースである疑いがあります。

元のクエリでは、ほとんどの列はcreatedDate(小文字の "c")以外のCamelCase ....です。あなたのdbテーブルの定義に "CreatedDate"というカラムがある場合、クエリは正常に実行されますが、誤って入力されたカラム名を使用しているとSqlBulkCopyが失敗します

関連する問題