2010-05-30 2 views
3

J'utilise SqlClient.SqlBulkCopy pour essayer de copier en bloc un fichier CSV dans une base de données . J'obtiens l'erreur suivante après avoir appelé la méthode ..WriteToServer.Pourquoi ce comportement étrange de sqlbulkcopy dans un site Web asp.net fonctionnant sous iis?

« La valeur donnée du type String de la source de données ne peut pas être converti en de type décimal de la colonne cible spécifiée. »

Voici mon code,

dt.Columns.Add("IsDeleted", typeof(byte)); 
    dt.Columns.Add(new DataColumn("CreatedDate", typeof(DateTime))); 
    foreach (DataRow dr in dt.Rows) 
    { 
     if (dr["MobileNo2"] == "" && dr["DriverName2"] == "") 
     { 
      dr["MobileNo2"] = null; 
      dr["DriverName2"] = ""; 
     } 
     dr["IsDeleted"] = Convert.ToByte(0); 
     dr["CreatedDate"] = Convert.ToDateTime(System.DateTime.Now.ToString()); 
    } 
    string connectionString = System.Configuration.ConfigurationManager. 
          ConnectionStrings["connectionString"].ConnectionString; 
    SqlBulkCopy sbc = new SqlBulkCopy(connectionString); 
    sbc.DestinationTableName = "DailySchedule"; 
    sbc.ColumnMappings.Add("WirelessId", "WirelessId"); 
    sbc.ColumnMappings.Add("RegNo", "RegNo"); 
    sbc.ColumnMappings.Add("DriverName1", "DriverName1"); 
    sbc.ColumnMappings.Add("MobileNo1", "MobileNo1"); 
    sbc.ColumnMappings.Add("DriverName2", "DriverName2"); 
    sbc.ColumnMappings.Add("MobileNo2", "MobileNo2"); 
    sbc.ColumnMappings.Add("IsDeleted", "IsDeleted"); 
    sbc.ColumnMappings.Add("CreatedDate", "CreatedDate"); 
    sbc.WriteToServer(dt); 
    sbc.Close(); 

Il n'y a pas d'erreur lors de l'exécution sous serveur visuel developement studio, mais il me donne une erreur lors de l'exécution sous iis .....

Voici les détails de ma table de serveur sql,

[Id] [int] IDENTITY(1,1) NOT NULL, 
[WirelessId] [int] NULL, 
[RegNo] [nvarchar](50) NULL, 
[DriverName1] [nvarchar](50) NULL, 
[MobileNo1] [numeric](18, 0) NULL, 
[DriverName2] [nvarchar](50) NULL, 
[MobileNo2] [numeric](18, 0) NULL, 
[IsDeleted] [tinyint] NULL, 
[CreatedDate] [datetime] NULL, 
+0

@ Marc juste compris la culture était le problème ..... Vous venez de donner un commentaire précieux ... –

Répondre

2

Pouvez-vous fournir des données d'échantillon?

On dirait que c'est l'un des numéros mobiles. Commencez par isoler la colonne exacte puis en vérifiant les données sources. En outre, il semble que le DataTable soit toutes les valeurs de chaîne, essayez de taper l'ensemble de données.

2

Si je devais deviner - culture. Quelle est la culture qu'IIS utilise et quelle est la culture utilisée par votre application de bureau? virgules vs périodes etc.

Questions connexes