2016-09-16 41 views
0

我在目標數據庫中創建表後收到以下錯誤。在sqlBulkCopy.WriteToServer(dtCeTask)上獲取錯誤;給出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),我懷疑是你的情況。

在您的原始查詢中,大多數列都位於CamelCase .... except createdDate(小寫「c」)之外。所以,也許,如果你的db表定義的列名爲「CreatedDate」,那麼查詢將正常運行,但是如果使用錯誤列名的列名,你的SqlBulkCopy將失敗

相關問題