• C# 操作 Oracle批量执行Insert Blob


    Oracle 批量 Insert Blob 操作

    表:

    create table BLOGTEST
    (
      id      NUMBER not null,
      name    VARCHAR2(100),
      picture BLOB
    )
    
    

    序列:

    create sequence SEQ_BlogTestID
    minvalue 1
    maxvalue 999999999999999999999999999
    start with 1
    increment by 1
    cache 20;
    

    类:

    
    namespace XLZFENTITY
    {
        public class AddImage
        {
            public string Name { get; set; }
    
            public byte[] Image { get; set; }
        }
    }
    
    

    方法:

    
            /// <summary>
            /// 增加一条数据
            /// </summary>
            public static int AddImage(string name, byte[] picture)
            {
                StringBuilder strSql = new StringBuilder();
    
                strSql.Append(" INSERT INTO BLOGTEST( ");
                strSql.Append(" ID,NAME,PICTURE)");
                strSql.Append(" VALUES (");
                strSql.Append(" SEQ_BlogTestID.Nextval,:Name,:Picture) ");//SEQ_BlogTestID 是数据库中的序列
    
                int returnrow = 0;
    
                using (OracleConnection conn = new OracleConnection(connStr))
                {
                    conn.Open();
    
                    using (OracleCommand cmd = conn.CreateCommand())
                    {
                        cmd.CommandText = strSql.ToString();
    
                        cmd.Parameters.Add(new OracleParameter(":Name", OracleDbType.Varchar2)).Value = name;
    
                        cmd.Parameters.Add(new OracleParameter(":Picture", OracleDbType.Blob)).Value = picture;
    
                        returnrow = cmd.ExecuteNonQuery();
                    }
                }
    
                return returnrow;
            }
    
            /// <summary>
            /// 示例:批量添加图片
            /// </summary>
            /// <param name="list"></param>
            /// <returns></returns>
            public static int AddImages(List<AddImage> list)
            {
                StringBuilder strSql = new StringBuilder();
    
                strSql.Append(" INSERT INTO BLOGTEST( ");
                strSql.Append(" ID,NAME,PICTURE)");
                strSql.Append(" VALUES (");
                strSql.Append(" SEQ_BlogTestID.Nextval,:Name,:Picture) ");//SEQ_BlogTestID 是数据库中的序列
    
                int returnrow = 0;
    
                int recordCount = list.Count;
    
                using (OracleConnection conn = new OracleConnection(connStr))
                {
                    conn.Open();
    
                    using (OracleCommand cmd = conn.CreateCommand())
                    {
                        cmd.CommandText = strSql.ToString();
    
                        cmd.ArrayBindCount = recordCount;  //指定单次需要处理的条数
                        //注意,这里的值是数组
                        cmd.Parameters.Add(new OracleParameter(":Name", OracleDbType.Varchar2, ParameterDirection.Input)).Value = list.Select(x => x.Name).ToArray(); //  item.Name;
    
                        cmd.Parameters.Add(new OracleParameter(":Picture", OracleDbType.Blob, ParameterDirection.Input)).Value = list.Select(x => x.Image).ToArray();
    
                        returnrow = cmd.ExecuteNonQuery();
                    }
                }
    
                return returnrow;
            }
    
    
    直如弦,死道边;曲如钩,反封侯
  • 相关阅读:
    烂泥:KVM使用NAT联网并为VM配置iptables端口转发
    烂泥:CentOS6.5挂载windows共享文件夹
    烂泥:KVM、kickstart与FTP集成
    js-浅显基础-正则表达式集
    小程序-轮播图案例
    小程序-TabBar点击切换
    js-禁止微信内置浏览器调整字体大小
    小程序-分享到群或好友
    小程序-提交信息(姓名,电话)
    js-在url后面添加时间戳清除浏览器打开页面的缓存
  • 原文地址:https://www.cnblogs.com/houlin/p/14858030.html
Copyright © 2020-2023  润新知