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;
        }
    直如弦,死道边;曲如钩,反封侯

                
            
        
浙公网安备 33010602011771号