2013-03-19 2 views
0

им с помощью C# 4.0 и SQL Server 2008 R2 У меня есть C# скрипт так:C# SQL вставки в с миллисекунды

string sSql = ""; 
foreach (var oItem in LeListVoit_End) 
{ 
    //insert into Lettrvoit 
    if (sSql != "") sSql += " UNION ALL "; 
    sSql += "SELECT '" + oItem.IdLettre + "', '" + oItem.FaClient +"', '" + oItem.Date_Cloture + "', '" + oItem.CodeDest + "', '" + oItem.ModalMode + "', '" + oItem.LibPort + "', '" + oItem.LibExpr + "', '" + oItem.LibUnite + "', '" + oItem.EnlvUnite + "', '" + oItem.NbrColis + "', '" + oItem.Poids.ToString().Replace(',', '.') + "', '" + oItem.LeCR.ToString().Replace(',', '.') + "', '" + oItem.LeVD.ToString().Replace(',', '.') + "', '" + oItem.CodeClient + "', '" 
              + oItem.RsNom_Exp.Replace("'", " ") + "', '" + oItem.Addr_Exp.Replace("'", " ") + "', '" + oItem.CP_Exp + "', '" + oItem.Ville_Exp.Replace("'", " ") + "', '" + oItem.Tel_Exp + "', '" + oItem.Fax_Exp + "', '" 
              + oItem.RsNom_Dest.Replace("'", " ") + "', '" + oItem.Addr_Dest.Replace("'", " ") + "', '" + oItem.CP_Dest + "', '" + oItem.Ville_Dest.Replace("'", " ") + "', '" + oItem.Tel_Dest + "', '" + oItem.Fax_Dest + "', '" + oItem.InseeDest + "', '" 
              + Is_Print + "', '" + CHAUFFEUR + "', '" + oItem.Transporteur + "', '" + oItem.NoOrdreCumul + "', '" + oItem.CodeMag + "', '" + oItem.Facturation + "', '" + oItem.IsLiv_sign + "', '" + oItem.IsLiv_Samedi + "', '" + oItem.Observ + "', '" + oItem.LeAgence + "', '" + oItem.LibTourne + "', '" + oItem.Date_Clot_Reel + "'"; 
} 
string sqlComm_Insert = "INSERT INTO LETTRE_VOIT_FINAL ([NOID],FA_CLIENT, [DATE_CLOTURE], [CODE_DEST] ,[MODAL_MODE], [LIBELLE_PORT] ,[LIBELLE_EXPR], [LIBELLE_UNITE],ENLEV_UNITE, [NBR_COLIS], [POID], [ENLEV_CREMB], [ENLEV_DECL], CODE_CLIENT, [RS_NOM_EXP] ,[ADDR_EXP] ,[CP_EXP] ,[VILLE_EXP] ,[TEL_EXP] ,[FAX_EXP],[RS_NOM_DEST] ,[ADDR_DEST] ,[CP_DEST] ,[VILLE_DEST] ,[TEL_DEST] ,[FAX_DEST],INSEE_DEST, IS_PRINT, CHAUFFEUR, TRANSPORTEUR, NO_ORDRE_CUMMUL, CODE_MAG, FACTURATION, LIVRS_SIGN, LIVRS_SAMD, OBS, LIB_AGENCE, LIB_TOURNE, DATE_CLOTUR_REEL) " + sSql; 

SqlCommand comm_Insert = new SqlCommand(sqlComm_Insert, connectionWrapper.conn); 
comm_Insert.ExecuteScalar(); 

это работает хорошо, но я скучаю значение millesecond из oItem.Date_Clot_Reel , когда я отладить его, я получил '2013-03-19 16: 02: 18.807'

, но после того, как я запустить этот SQL я получил '2013-03-19 16: 02: 18.000'

как я могу MIS миллисекунда 807?

благодарит вас заранее

PS: может быть, он отлично работает, когда я использую

comm_Insert.Parameters.AddWithValue("@NDATE_CLOTURE_REEL", oItem.Date_Clot_Reel); 

но когда я использую, как это, я не могу использовать sSql += " UNION ALL ";

+1

http://stackoverflow.com/questions/715432/why-is-sql-server-losing-a-millisecond –

+0

Пожалуйста, не используйте строки для создания таких команд sql. Вы открываете себе атаки SQL-инъекций. –

+0

Почему бы вам не переоборудовать все эти беспорядки и создать себе «Хранимую процедуру» мою доброту. Также параметризованные запросы - ваш лучший друг, «Используйте их» – MethodMan

ответ

0

Проверьте тип данных на SQL Server. Чтобы хранить дату и время в миллисекундах, требуется вместо Datetime datatype вместо smalldatetime.

Смежные вопросы