从Informix获取列表/多集到C#

时间:2018-07-09 10:05:52

标签: c# informix outsystems

我正在制作一个库,用于连接带有C#扩展名的Informix数据库,以供在Outsystems中使用。

所以,现在我碰壁了。我需要从数据库接收列表/多集。我怎样才能做到这一点?我正在使用IfxDataReader接收数据。但是我看不到任何可行的方法。

Here是我们如何发送列表/多集输入参数的方法。但是我需要从结果集中接收它。

编辑:看到有人对此不满意,我将提供一些代码,然后尝试一下以查看您是否认为它正确(由于我还没有数据库上的数据,所以现在无法对其进行测试) ...我将对其进行最后的测试):

        ssBensAndFotos = new RLBensAndFotos_BemRecordList();

        DatabaseConnection dc = new DatabaseConnection(ssDatabase, ssHost, ssServer, ssService, ssProtocol, ssUserID, ssPassword);

        try
        {
            dc.Conn = new IfxConnection(dc.ConnectionString);
            dc.Cmd = new IfxCommand("get_bens_and_fotos_by_id_diligencia", dc.Conn);
            dc.Cmd.CommandType = CommandType.StoredProcedure;

            dc.Cmd.Parameters.Add(new IfxParameter("pi_id_diligencia", IfxType.Integer) { Direction = ParameterDirection.Input, Value = sspi_id_diligencia });

            dc.Conn.Open();

            using (IfxDataReader reader = dc.Cmd.ExecuteReader())
                if (reader.HasRows)
                    while (reader.Read())
                    {
                        var bensAndFotos = new STBensAndFotos_BemStructure()
                        {
                            ssid_bem = reader.GetInt32(0),
                            ssnumero = reader.GetInt32(1),
                            ssespecie = reader.GetString(2),
                            ssbem = reader.GetString(3),
                            ssvalor = reader.GetDecimal(4),
                            sscomum = reader.GetInt32(5),
                            ssvoice_record = AuxiliaryMethods.CreateByteArrayFromIfxBlob(reader.GetIfxBlob(6))
                        };
                       // Here I get the string, split it and check to see which members of the array are integers, since in this case I'll be getting a multiset of int's
                        var multisetString = reader.GetString(7).Split('\'');
                        int n;
                        foreach (var item in multisetString)
                            if (int.TryParse(item, out n))
                                bensAndFotos.ssfotos.Add(new STBensAndFotos_FotoStructure() { ssfoto = n });

                        ssBensAndFotos.Add(bensAndFotos);
                    }

            dc.Conn.Close();
        }
        catch (Exception ex)
        {
            throw new Exception(ex.Message);
        }

1 个答案:

答案 0 :(得分:1)

LIST,MULTISET和SET映射到String。您应该可以使用IfxDataReader.GetString()来获取数据。