C#处理oracle数据操作in(:xx)的传入关系

在oracle中碰到需要in(:xx)的时候就直接传一个数组并且循坏加载就可以了。

将获取到类似("1,12,4,3,15")的数据作为条件传入查询语句中,可以先将该字符串转int[]数组,然后作为条件传参即可。

 

字符数组转Int数组

1

2

string str = "2,4,4,4";

int[] list = Array.ConvertAll<stringint>(str.Split(','), s => int.Parse(s));

 

在查询语句那直接一个for循环依次加载数据。

private const string sqlQueryFunctionById = "select ID,name,url,isdel,ISEXTERNAL,JUMPLINK,XSSX from BAZS_CYGNSZ where  id=:ids order by xssx desc";

public static List<FunctionSetting> QueryFunctionSettingByIds(int[] Ids)
        {
            List<FunctionSetting> list = new List<FunctionSetting>();
            using (OracleConnection dbCon = OracleHelper.OpenConnection())
            {
                try
                {
                    for (int i = 0; i < Ids.Length; i++)
                    {
                        OracleParameter[] para = new OracleParameter[1] { new OracleParameter(":ids", Ids[i]) };
                        IDataReader reader = OracleHelper.ExecuteReader(dbCon, CommandType.Text, sqlQueryFunctionById, para);
                        while (reader.Read())
                        {
                            FunctionSetting functionSetting = new FunctionSetting();
                            functionSetting.Id = reader.GetDecimal(0);
                            functionSetting.Name = reader.GetString(1);
                            functionSetting.Url = reader.GetString(2);
                            functionSetting.IsDel = reader.GetDecimal(3);
                            functionSetting.IsExternal = reader.GetDecimal(4);
                            functionSetting.JumpLink = reader.GetString(5);

                            int order = 0;
                            if (!reader.IsDBNull(6))
                            {
                                int.TryParse(reader[6].ToString(), out order);
                            }
                            functionSetting.DisplayOrder = order;
                            list.Add(functionSetting);
                        }
                    }
                }
                catch (Exception exc)
                {
                    OracleLogWriter.WriteSystemLog($"{exc.Source}发生异常,异常信息{exc.Message},位置{exc.StackTrace}", "Error");
                }
            }
            return list;
        }

 

 

--------------------------------------------------------

如果查询有为null的字段想转换为0的话,可以用   

NVl(a1,0) a1为null 返回0 否则为a1

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值