2 wills2009 wills2009 于 2014.07.23 23:46 提问

使用SqlBulkCopy时,无法将TXT中的时间字符串转换为SQL中的Datetime类型

今日在做项目中用到中转文件缓存的思路来想服务器传送数据,第一次使用SqlBulkCopy,但是遇到了问题:在将TXT文件中的数据复制到sql中时,第一列的时间总是提示格式不对,vs提示无法将第一列的字符串转换为DateTime格式,请各位高手支招,谢谢!!!连续加班十多天了,任务紧急,希望各位能给提出宝贵意见。
在每个TXT文件中的,每一行数据是这样存放的:
2014-07-22 00:14:31:296,六甲牵引变电所_1#主变低压侧B相电压,0.0831843,192
以下是我的程序,很菜,见笑:
//读取中转文件,此处的Path好像没用,随意写一个string就行,SQLConnectionString为指定的数据库连接字符串
public static void ReadFile(string Path, string SQLConnectionString)
{
using (SqlConnection conn = new SqlConnection(SQLConnectionString))
{
conn.Open();

        DirectoryInfo di = new DirectoryInfo(@"d:\中转文件");
        foreach (var fi in di.GetFiles("*.txt", SearchOption.AllDirectories))
        {
            string sLine = "";
            DataTable dt = new DataTable();
            dt.Columns.Add(new DataColumn("时间标签"));
            dt.Columns.Add(new DataColumn("遥测点名"));
            dt.Columns.Add(new DataColumn("遥测值"));
            dt.Columns.Add(new DataColumn("数据质量"));
            //建立sql连接

            using (StreamReader sr = new StreamReader(fi.FullName))
            {

                while ((sLine = sr.ReadLine()) != null)
                {
                    DataRow row = dt.NewRow(); 
                    row.ItemArray= sLine.Split(',');
                    dt.Rows.Add(row);
                }

                System.Data.SqlClient.SqlBulkCopy sbc = new  System.Data.SqlClient.SqlBulkCopy(SQLConnectionString);
                {
                    sbc.BulkCopyTimeout = 5000;
                 // sbc.BatchSize = dt.Rows.Count;

                    try
                    {
                        //复制TXT中的数据
                        sbc.DestinationTableName = "中转测试";
                        sbc.WriteToServer(dt);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.ToString());
                    }
                }

            }

          }
         conn.Close();

      } 
           //将每个TXT文件删除
            string[] strFileName = Directory.GetFiles("D:\\中转文件", "*.txt");
            foreach (var item in strFileName)            
            {
              File.Delete(item);
              Console.WriteLine("{0}文件被删除了",item);
            }
    }
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!