sqlsugar 在插入二进制数据的时候 为何性能差这么多? 返回

求助
1 272
该叫什么 木庄 发布于2019/3/3
悬赏:5 飞吻

数据库为sqlserver,字段类型为image。

insert 操作使用sqlsugar方式和ado.net的性能差了好多:

QQ图片20190303122634.png

耗时单位为毫秒。

代码:

private void button1_Click(object sender, EventArgs e)
        {
            //创建一个对话框对象
            OpenFileDialog ofd = new OpenFileDialog
            {
                //为对话框设置标题
                Title = "请选择上传的图片",
                //设置筛选的图片格式
                Filter = "(*.jpg,*.png)|*.jpg;*.png",
                //设置是否允许多选
                Multiselect = false
            };
            //如果你点了“确定”按钮
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                //获得文件的完整路径(包括名字后后缀)
                string filePath = ofd.FileName;
                System.Drawing.Image Img = System.Drawing.Image.FromFile(filePath);
                byte[] a = ImageToByte(Img);
                t m = new t
                {
                    img = a
                };

                DateTime dt1 = DateTime.Now;
                Add(m);
                lblSugar.Text = (DateTime.Now - dt1).TotalMilliseconds.ToString();

                DbHelper dbHelper = new DbHelper();
                SqlParameter[] parameters = {
                    new SqlParameter("@img", SqlDbType.Image)};
                parameters[0].Value = a;

                DateTime dt2 = DateTime.Now;
                dbHelper.RunSql("insert into t(img) values(@img)", parameters);
                lblAdo.Text = (DateTime.Now - dt2).TotalMilliseconds.ToString();


            }
        }

        public class t
        {
            public byte[] img { get; set; }
        }


        //将image转换成byte[]数据 
        public static byte[] ImageToByte(System.Drawing.Image image)
        {
            MemoryStream ms = new MemoryStream();
            image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
            return ms.ToArray();
        }

        public int Add(t model)
        {
            return DbSugar.GetInstance().Insertable(model).ExecuteCommand();
        }


DbHelper的Runsql:

        /// <summary>
        /// 执行Sql语句方法没有返回值
        /// </summary>
        /// <param name="sqlStr">传入的查询参数</param>
        /// <param name="cmdParms"></param>
        public void RunSql(string sqlStr, params SqlParameter[] cmdParms)
        {
            OpenDataBase();//打开数据库连接  代码就不贴了
            _cmd = new SqlCommand(sqlStr, _con);
            _cmd.Parameters.AddRange(cmdParms);
            _cmd.ExecuteNonQuery();
            CloseDataBase();//关闭数据库连接  代码就不贴了
        }

请教一下,这是我sqlsugar哪里使用不当,还是sqlsugar的处理byte[]数据的问题?

热忱回答1

版块

学习文档

最新会员

发布达人

回贴达人