C# 从Winforms应用程序将datatable上载到SQLServer2008时遇到问题

C# 从Winforms应用程序将datatable上载到SQLServer2008时遇到问题,c#,sql,tsql,ado.net,C#,Sql,Tsql,Ado.net,我正在从CSV文件流式传输数据,并尝试将其导入SQL Server 2008。我在网络上四处寻找,我想出了这种方法,但它不起作用。关于如何使其更好的任何想法(从实际工作的意义上讲) 输入参数是数据表中的CSV数据 代码如下: private void ExportCSV(DataTable dtCSV) { DateTime dayOfYear = DateTime.Now.Date; dtCSV.TableName = "ActivationDa

我正在从CSV文件流式传输数据,并尝试将其导入SQL Server 2008。我在网络上四处寻找,我想出了这种方法,但它不起作用。关于如何使其更好的任何想法(从实际工作的意义上讲)

输入参数是数据表中的CSV数据

代码如下:

   private void ExportCSV(DataTable dtCSV)
     {
        DateTime dayOfYear = DateTime.Now.Date;
        dtCSV.TableName = "ActivationDate_"+dayOfYear.ToString();
        string createTempTable = "SELECT * INTO ThisActivation FROM @tvp";
        using (SqlDataAdapter adap = new SqlDataAdapter(createTempTable,GetConnection()))
        {
            adap.InsertCommand.Parameters.Add("@tvp", SqlDbType.NVarChar, int.MaxValue);
            adap.InsertCommand.Parameters["@tvp"].Value = dtCSV;
            adap.InsertCommand.ExecuteNonQuery();
        }
    }

您不能参数化表名(或列名)

有一个选项可以恢复到它,不过这会为您打开窗口

这是可行的,不过您应该非常小心地验证
dtCSV
,以避免SQL注入

string createTempTable = "SELECT * INTO ThisActivation FROM " + dtCSV;

请更具体地说“[它]不起作用”。看到没。。。那我该怎么做呢?如果能链接到代码示例,我将不胜感激,但我已经在谷歌上搜索过了,它没有多大用处,这个问题太广泛了,如果不浏览大量的代码示例,就无法获得任何有用的信息pages@Dani-我链接到的文章(动态SQL)很全面。@Dani-没问题。我编辑了我原来的帖子,后来添加了链接。。。总是在评论之前刷新;)我应该仍然使用SqlDataAdapter,还是使用SqlCommand来完成这项工作?