C# ExecuteOnQuery()-at System.RuntimeMethodHandle.InvokeMethod(对象目标、对象[]参数、签名符号、布尔构造函数)

C# ExecuteOnQuery()-at System.RuntimeMethodHandle.InvokeMethod(对象目标、对象[]参数、签名符号、布尔构造函数),c#,ssis,C#,Ssis,使用SSIS的脚本组件执行C代码时,出现以下错误: 在System.RuntimeMethodHandle.InvokeMethodObject目标处,对象[]参数,签名符号,布尔构造函数 在System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternalObject obj中,对象[]参数,对象[]参数 在System.Reflection.RuntimeMethodInfo.InvokeObject obj中,BindingFlags invo

使用SSIS的脚本组件执行C代码时,出现以下错误:

在System.RuntimeMethodHandle.InvokeMethodObject目标处,对象[]参数,签名符号,布尔构造函数 在System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternalObject obj中,对象[]参数,对象[]参数 在System.Reflection.RuntimeMethodInfo.InvokeObject obj中,BindingFlags invokeAttr、Binder Binder、Object[]参数、CultureInfo区域性 在System.RuntimeType.InvokeMemberString名称、BindingFlags BindingFlags、Binder Binder、对象目标、对象[]提供的参数、参数修改器[]修饰符、CultureInfo区域性、字符串[]namedParams 位于Microsoft.SqlServer.Dts.Tasks.ScriptTask.vstatasksscriptingengine.ExecuteScript

在这里,我正在读取一个excel文件,并在文件名上动态创建一个sql server表并加载数据。 在创建表时遇到此错误,尤其是在执行语句myCommand.ExecuteOnQuery时

参考代码:-

SqlConnection myADONETConnection = new SqlConnection();
 myADONETConnection = (SqlConnection)(Dts.Connections["LANDConn"].AcquireConnection(Dts.Transaction) as SqlConnection);
SqlCommand myCommand = new SqlCommand(tableDDL, myADONETConnection);
myCommand.ExecuteNonQuery(); 
我该怎么办?

公用空主机

{ 字符串FolderPath=Dts.Variables[User::FolderPath].Value.ToString

var directory=newdirectoryInfoFolderPath

FileInfo[]files=directory.GetFiles

字符串fileFullPath=

文件中的foreach FileInfo文件

{


}

请调试并向我们显示您正在发送的sqlcommand。您的错误消息中没有错误。您没有发布足够的信息,任何人都无法帮助您。您好,我已使用上述代码从excel文件读取数据,并从这些excel文件动态创建表。但是,收到提到的错误消息是错误的特别是在myCommand.ExecuteNonQuery;行。请任何人建议任何选项来更正我。。
 string filename = "";

 fileFullPath = FolderPath+"\\"+file.Name;                    

 filename = file.Name.Replace(".xlsx","");                    

 string ConStr;

 string HDR;

 HDR="YES";

 ConStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +  
           fileFullPath + ";Extended Properties=\"Excel 12.0;HDR=" + 
           HDR + ";IMEX=1\"";  

 OleDbConnection cnn = new OleDbConnection(ConStr);

 cnn.Open();

 DataTable dtSheet = cnn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,  
                     null);  

 string sheetname;

 sheetname="";

 foreach (DataRow drSheet in dtSheet.Rows)

    {
       if (drSheet["TABLE_NAME"].ToString().Contains("$"))
         {
             sheetname=drSheet["TABLE_NAME"].ToString();
             OleDbCommand oconn = new OleDbCommand("select * from [" +  
                                  sheetname + "]", cnn);
             OleDbDataAdapter adp = new OleDbDataAdapter(oconn);
             DataTable dt = new DataTable();
             adp.Fill(dt);
             string tableDDL = "";
             tableDDL += "IF Not EXISTS (SELECT * FROM sys.objects WHERE 
                          object_id = ";
              tableDDL +="OBJECT_ID(N'[dbo].[" + filename +"]') AND  
                          type  in (N'U'))";
               tableDDL +=  "Create table [" + filename + "]";
               tableDDL += "(";
                 for (int i = 0; i < dt.Columns.Count; i++)
                 {
                  if (i != dt.Columns.Count - 1)
                     tableDDL += "[" + dt.Columns[i].ColumnName + "] "  
                              +   "NVarchar(max)" + ",";
                     else
                      tableDDL += "[" + dt.Columns[i].ColumnName + "] "  
                                      + "NVarchar(max)";
                   }
                  tableDDL += ")";

                 SqlConnection myADONETConnection = new SqlConnection();
                 myADONETConnection = (SqlConnection)  
                 (Dts.Connections["Connection 
                  Manager"].AcquireConnection(Dts.Transaction) as 
                           SqlConnection);
                 SqlCommand myCommand = new SqlCommand(tableDDL,  
                  myADONETConnection);
                 myCommand.ExecuteNonQuery();

                 //Load the data from DataTable to SQL Server Table.
                 SqlBulkCopy blk = new SqlBulkCopy(myADONETConnection);
                 blk.DestinationTableName = "[" + filename +"]";
                 blk.WriteToServer(dt);
            } 
        }