Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从SSIS接收system.object变量,并在C中的foreach并行循环中对其进行循环#_C#_Ssis - Fatal编程技术网

C# 从SSIS接收system.object变量,并在C中的foreach并行循环中对其进行循环#

C# 从SSIS接收system.object变量,并在C中的foreach并行循环中对其进行循环#,c#,ssis,C#,Ssis,这段代码看起来很好,但在这里我通过添加插入。将所有的值都保存到列表表中。而我想要的是将一个对象变量(User::Hosps)从SSIS(system.object)分配到列表(或数组) 怎样才能做到呢? 本部分: OleDbDataAdapter A = new OleDbDataAdapter(); System.Data.DataTable dt = new System.Data.DataTable(); A.Fill(dt, Dts.Variables["User::

这段代码看起来很好,但在这里我通过添加插入。将所有的值都保存到列表表中。而我想要的是将一个对象变量(User::Hosps)从SSIS(system.object)分配到列表(或数组) 怎样才能做到呢? 本部分:

OleDbDataAdapter A = new OleDbDataAdapter();
     System.Data.DataTable dt = new System.Data.DataTable();
     A.Fill(dt, Dts.Variables["User::Hosps"].Value);
是我在网上找到并尝试使用的东西,但它分配给列表的值不是我希望从对象中获得的值

#region Namespaces
using System;
using System.Data;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Data.OleDb;
using Microsoft.SqlServer.Dts.Runtime;
using System.Diagnostics;
using System.Collections.Generic;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types; 
#endregion

namespace ST_ef6fc7b20ff94cbfb2587ed23a6520a0
{

    [Microsoft.SqlServer.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPointAttribute]
    public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
    {

        public void Main()
        {
         OleDbDataAdapter A = new OleDbDataAdapter();
         System.Data.DataTable dt = new System.Data.DataTable();
         A.Fill(dt, Dts.Variables["User::Hosps"].Value);

        foreach (DataRow row in dt.Rows)
        {
             Tables.Add(row.ToString());
        }


          List<string> Tables = new List<string>();
             Tables.Add("ABRAVIV");
             Tables.Add("FLIMANAVIV");
             Tables.Add("BSHAVIV");
             Tables.Add("LEVAVIV");
             Tables.Add("BEERAVIV");
             Tables.Add("TIRAAVIV");
             Tables.Add("SHRAVIV");
             Tables.Add("MAZAVIV");
             Tables.Add("NTNYAAVIV");
             Tables.Add("SHMUELAVIV");
             Tables.Add("PARDESAVIV");
             Tables.Add("RISHONAVIV");

        Parallel.ForEach(Tables, Table =>
        {

             SqlConnection myConnection = new SqlConnection();
                          myConnection.ConnectionString = "Data Source=vmbi-devdb\\gp;Initial Catalog=GP;Integrated Security=True;Pooling=false;";
             SqlDataReader rdr = null;
             myConnection.Open();
             SqlCommand cmd = new SqlCommand("exec Mirror_Logistic.Load_Table_From_Source " + Table, myConnection);
             cmd.CommandTimeout = 0; 
             rdr = cmd.ExecuteReader();
             myConnection.Close();         


           });
            }
     #region ScriptResults declaration
        enum ScriptResults
        {
            Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success,
            Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
        };
        #endregion
    }
}
#区域名称空间
使用制度;
使用系统数据;
使用System.IO;
使用系统线程;
使用System.Threading.Tasks;
使用System.Windows.Forms;
使用System.Data.SqlClient;
使用System.Data.OleDb;
使用Microsoft.SqlServer.Dts.Runtime;
使用系统诊断;
使用System.Collections.Generic;
使用Oracle.DataAccess.Client;
使用Oracle.DataAccess.Types;
#端区
命名空间ST_ef6fc7b20ff94cbfb2587ed23a6520a0
{
[Microsoft.SqlServer.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPointAttribute]
公共部分类ScriptMain:Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
{
公共图书馆
{
OleDbDataAdapter A=新的OleDbDataAdapter();
System.Data.DataTable dt=新的System.Data.DataTable();
A.Fill(dt,Dts.Variables[“User::Hosps”].Value);
foreach(数据行中的数据行)
{
Tables.Add(row.ToString());
}
列表表=新列表();
表。添加(“ABRAVIV”);
表。添加(“FLIMANAVIV”);
表。添加(“BSHAVIV”);
表。添加(“LEVAVIV”);
表。添加(“BEERAVIV”);
表。添加(“TIRAAVIV”);
表。添加(“SHRAVIV”);
表。添加(“MAZAVIV”);
表。添加(“NTNYAAVIV”);
表。添加(“SHMUELAVIV”);
表。添加(“PARDESAVIV”);
表。添加(“RISHONAVIV”);
Parallel.ForEach(表,表=>
{
SqlConnection myConnection=newsqlconnection();
myConnection.ConnectionString=“数据源=vmbi-devdb\\gp;初始目录=gp;集成安全性=True;池=false;”;
SqlDataReader rdr=null;
myConnection.Open();
SqlCommand cmd=new SqlCommand(“exec Mirror\u Logistic.Load\u Table\u From\u Source”+Table,myConnection);
cmd.CommandTimeout=0;
rdr=cmd.ExecuteReader();
myConnection.Close();
});
}
#区域脚本结果声明
枚举脚本结果
{
Success=Microsoft.SqlServer.Dts.Runtime.dtsesecresult.Success,
Failure=Microsoft.SqlServer.Dts.Runtime.dtsesecresult.Failure
};
#端区
}
}

实际上,变量User::Hosps包含的值与我在表中分配的值相同。添加对不起,您把我弄糊涂了

是否要将ur SSIS对象中的值分配给列表? 或者你想把你的值从C#分配给你的对象

    public void Main()
    {
     OleDbDataAdapter A = new OleDbDataAdapter();
     System.Data.DataTable dt = new System.Data.DataTable();
     A.Fill(dt, Dts.Variables["User::Hosps"].Value);  List<string> myValues = new list<string>();

    foreach (DataRow row in dt.Rows)
    {
         myValues.Add(row[0].ToString());
    }
public void Main()
{
OleDbDataAdapter A=新的OleDbDataAdapter();
System.Data.DataTable dt=新的System.Data.DataTable();
A.Fill(dt,Dts.Variables[“User::Hosps”].Value);List myValues=new List();
foreach(数据行中的数据行)
{
添加(行[0].ToString());
}

据我所知,您的操作是正确的。您只能使用datatable和foreach将SSIS对象添加到列表中。因此正确的方法是使用ADD:)第一个选项:将SSIS对象变量中的值分配给列表好的,然后您的操作是正确的。只需删除手动添加的行:)