精华内容
下载资源
问答
  • 数据库存取图片方式

    2018-05-02 14:40:44
    转载于 http://www.cnblogs.com/sufei/archive/2010/09/24/1834054.html第一种方式 文件夹与数据库配合 近来做了不少关于这块功能 ,随着网络飞速发展,网络存取图片已不再是神话,而成为了一种时尚,如果是...

    转载于 http://www.cnblogs.com/sufei/archive/2010/09/24/1834054.html

    第一种方式   文件夹与数据库配合


            近来做了不少关于这块的功能 ,随着网络的飞速发展,网络存取图片已不再是神话,而成为了一种时尚,如果是你 是用Asp.net开发的话,可能更多的人会考虑使用数据库存储图片的路经,而在文件夹是存储图片的方式。这种方式主要的方法有两个一个就是怎么样读取图片,怎么样存储图上,读取的话我就不多说的这个是最简单的了,只要大家把地址=给存储图片的对象就行了,在取的时候一般要使用相对地址也就是“~” 如下所示

     

     

    ImageUrl="../CardDeal/SellCardZhi.jpg' 
    ImageUrl="~/CardDeal/SellCardZhi.jpg' 

     

     

    当然这前面要加上你自己的图片所在服务器的文件夹的名称

    我们来看是一下是怎么存储的吧,我常用的一个方法是这样的

     

    复制代码
     /// <summary>
        
    /// 上传图片
        
    /// </summary>
        
    /// <param name="FUSShopURL">FileUpload对象</param>
        
    /// <param name="UpladURL">图片要放到的目录名称</param>
        
    /// <returns>如果FileUpload不为空则返回上传后的图片位置,否则返回为空字符</returns>
        public  static  string  uploadImage(FileUpload FUSShopURL, string UpladURL)
        {
            
    if (FUSShopURL.HasFile)
            {
                
    //获取当前的时间,一当作图片的名字
                string fileName = DateTime.Now.ToString("yyyyMMddhhmmss"+ DateTime.Now.Millisecond.ToString();
                
    //获取图片的扩展名
                string Extent = System.IO.Path.GetExtension(FUSShopURL.PostedFile.FileName);
                
    //重命名图片
                fileName += Extent;
                
    //设置上传图片保存的文件夹
                string dir = System.Web.HttpContext.Current.Server.MapPath(UpladURL);
                
    //指定图片的路径及文件名
                string path = dir + "\\" + fileName;
                
    //把上传得图片保存到指定的文件加中
                FUSShopURL.PostedFile.SaveAs(path);
                
    return  fileName;
            }
            
    else
            {
                
    return "";
            }
        }
    复制代码

     

    这个方法是与FileUpload控件 一起使用的,方法很简单大家一看就明白了。

    方法返回的就是一个相对的路经可以直接存储的数据里,然后从前台调用就可以了

     

    第二种方式    直接把图片的Base64String码进行存取


     

              这种方法很方便,直接转化一下就行了,不需要书写很麻烦的路经问题

    先看一下是怎么存储到数据库的吧

            

    复制代码
    //选择图片
            private void button1_Click(object sender, EventArgs e)
            {
                OpenFileDialog openfile 
    = new OpenFileDialog();
                openfile.Title 
    = "请选择客户端longin的图片";
                openfile.Filter 
    = "Login图片(*.jpg;*.bmp;*png)|*.jpeg;*.jpg;*.bmp;*.png|AllFiles(*.*)|*.*";
                
    if (DialogResult.OK == openfile.ShowDialog())
                {
                    
    try
                    {
                        Bitmap bmp 
    = new Bitmap(openfile.FileName);
                        pictureBox1.Image 
    = bmp;
                        pictureBox1.SizeMode 
    = PictureBoxSizeMode.Zoom;
                        MemoryStream ms 
    = new MemoryStream();
                        bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
                        
    byte[] arr = new byte[ms.Length];
                        ms.Position 
    = 0;
                        ms.Read(arr, 
    0, (int)ms.Length);
                        ms.Close();
                        
    //直接返这个值放到数据就行了
                        pic = Convert.ToBase64String(arr);
                    }
                    
    catch { }
                }
            }
    复制代码

     

       读取的方法也很简单, pic就是我们得到的图片字符串只要我们存储到数据库里,从下面的方法里读取就可以了

    需要注意的地方我都加的有注释

     

    复制代码
    //加载图片
            private void Form1_Load(object sender, EventArgs e)
            {
                
    try
                {
                   // pic=........这一句换成从数据库里读取就可以了
                    
    //判断是否为空,为空时的不执行
                    if (!string.IsNullOrEmpty(pic))
                    {
                        
    //直接返Base64码转成数组
                        byte[] imageBytes = Convert.FromBase64String(pic);
                        
    //读入MemoryStream对象
                        MemoryStream memoryStream = new MemoryStream(imageBytes, 0, imageBytes.Length);
                        memoryStream.Write(imageBytes, 
    0, imageBytes.Length);
                        
    //转成图片
                        Image image = Image.FromStream(memoryStream);

                        
    //memoryStream.Close();//不要加上这一句否则就不对了

                        
    // 将图片放置在 PictureBox 中
                        this.pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
                        
    this.pictureBox1.Image = image;
                    }
                }
                
    catch { }
            }
    复制代码

     

     

              大家看一下效果吧

     

     

     

    在这里我们只要单击选择图片直接就可以更换。这些很简单但是我个人感觉还是很常用的,而且网上关于这块的例子着实不少,不过真正能帮上忙的还真不多,因为我们的好几个项目里用到了这些方法,或多或少的还是有些员工不怎么会, 在这里贴一贴方便新手查看吧。呵呵

    下面的本例子的所有代码

     

    复制代码
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.IO;
    using System.Threading;

    namespace WindowsFormsApplication1
    {
        
    public partial class Form1 : Form
        {
            
    public Form1()
            {
                InitializeComponent();
            }

            
    string pic = "";
            
    //加载图片
            private void Form1_Load(object sender, EventArgs e)
            {
                
    try
                {
                    
    if (!string.IsNullOrEmpty(pic))
                    {
                        
    byte[] imageBytes = Convert.FromBase64String(pic);
                        MemoryStream memoryStream 
    = new MemoryStream(imageBytes, 0, imageBytes.Length);
                        memoryStream.Write(imageBytes, 
    0, imageBytes.Length);
                        Image image 
    = Image.FromStream(memoryStream);

                        
    // 将图片放置在 PictureBox 中
                        this.pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
                        
    this.pictureBox1.Image = image;
                    }
                }
                
    catch { }
            }

            
    //选择图片
            private void button1_Click(object sender, EventArgs e)
            {
                OpenFileDialog openfile 
    = new OpenFileDialog();
                openfile.Title 
    = "请选择客户端longin的图片";
                openfile.Filter 
    = "Login图片(*.jpg;*.bmp;*png)|*.jpeg;*.jpg;*.bmp;*.png|AllFiles(*.*)|*.*";
                
    if (DialogResult.OK == openfile.ShowDialog())
                {
                    
    try
                    {
                        Bitmap bmp 
    = new Bitmap(openfile.FileName);
                        pictureBox1.Image 
    = bmp;
                        pictureBox1.SizeMode 
    = PictureBoxSizeMode.Zoom;
                        MemoryStream ms 
    = new MemoryStream();
                        bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
                        
    byte[] arr = new byte[ms.Length];
                        ms.Position 
    = 0;
                        ms.Read(arr, 
    0, (int)ms.Length);
                        ms.Close();
                        pic 
    = Convert.ToBase64String(arr);
                    }
                    
    catch { }
                }
            }
        }
    }
    复制代码

     

    第三种方式   读成二进制后进行存取


     

     

       先把图片读成二进制以后再做处理,这样快捷而且代码相对少很多,还有就是感谢下面几位网友的提醒和建议,在这里我把我简单写的代码贴一下,怎么样存储到数据库的方法还是大家自己写我只提供存取的方法

     

    复制代码
       private void button1_Click(object sender, EventArgs e)
            {
                OpenFileDialog openfile 
    = new OpenFileDialog();
                openfile.Title 
    = "请选择客户端longin的图片";
                openfile.Filter 
    = "Login图片(*.jpg;*.bmp;*png)|*.jpeg;*.jpg;*.bmp;*.png|AllFiles(*.*)|*.*";
                
    if (DialogResult.OK == openfile.ShowDialog())
                {
                    
    try
                    {
                        
    //读成二进制
                        byte[] bytes = File.ReadAllBytes(openfile.FileName);
                        
    //直接返这个存储到数据就行了cmd.Parameters.Add("@image", SqlDbType.Image).Value = bytes;

                        
    //输出二进制  在这里把数据中取到的值放在这里byte[] bytes=(byte[])model.image;
                        pictureBox1.Image = System.Drawing.Image.FromStream(new MemoryStream(bytes));
                        
    this.pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;

                        
    // 如果保存成文件:
                        File.WriteAllBytes(@"d:\text.jpg", bytes);
                    }
                    
    catch { }
                }
            }
    复制代码
    展开全文
  •  近来做了不少关于这块功能 ,随着网络飞速发展,网络存取图片已不再是神话,而成为了一种时尚,如果是你 是用Asp.net开发话,可能更多人会考虑使用数据库存储图片路经,而在文件夹是存储图片的方式

    原文:http://www.cnblogs.com/sufei/archive/2010/09/24/1834054.html

    第一种方式   文件夹与数据库配合


            近来做了不少关于这块的功能 ,随着网络的飞速发展,网络存取图片已不再是神话,而成为了一种时尚,如果是你 是用Asp.net开发的话,可能更多的人会考虑使用数据库存储图片的路经,而在文件夹是存储图片的方式。这种方式主要的方法有两个一个就是怎么样读取图片,怎么样存储图上,读取的话我就不多说的这个是最简单的了,只要大家把地址=给存储图片的对象就行了,在取的时候一般要使用相对地址也就是“~” 如下所示

     

     

    ImageUrl="../CardDeal/SellCardZhi.jpg' 
    ImageUrl="~/CardDeal/SellCardZhi.jpg' 

     

     

    当然这前面要加上你自己的图片所在服务器的文件夹的名称

    我们来看是一下是怎么存储的吧,我常用的一个方法是这样的

     

    复制代码
     /// <summary>
        
    /// 上传图片
        
    /// </summary>
        
    /// <param name="FUSShopURL">FileUpload对象</param>
        
    /// <param name="UpladURL">图片要放到的目录名称</param>
        
    /// <returns>如果FileUpload不为空则返回上传后的图片位置,否则返回为空字符</returns>
        public  static  string  uploadImage(FileUpload FUSShopURL, string UpladURL)
        {
            
    if (FUSShopURL.HasFile)
            {
                
    //获取当前的时间,一当作图片的名字
                string fileName = DateTime.Now.ToString("yyyyMMddhhmmss"+ DateTime.Now.Millisecond.ToString();
                
    //获取图片的扩展名
                string Extent = System.IO.Path.GetExtension(FUSShopURL.PostedFile.FileName);
                
    //重命名图片
                fileName += Extent;
                
    //设置上传图片保存的文件夹
                string dir = System.Web.HttpContext.Current.Server.MapPath(UpladURL);
                
    //指定图片的路径及文件名
                string path = dir + "\\" + fileName;
                
    //把上传得图片保存到指定的文件加中
                FUSShopURL.PostedFile.SaveAs(path);
                
    return  fileName;
            }
            
    else
            {
                
    return "";
            }
        }
    复制代码

     

    这个方法是与FileUpload控件 一起使用的,方法很简单大家一看就明白了。

    方法返回的就是一个相对的路经可以直接存储的数据里,然后从前台调用就可以了

     

    第二种方式    直接把图片的Base64String码进行存取


     

              这种方法很方便,直接转化一下就行了,不需要书写很麻烦的路经问题

    先看一下是怎么存储到数据库的吧

            

    复制代码
    //选择图片
            private void button1_Click(object sender, EventArgs e)
            {
                OpenFileDialog openfile 
    = new OpenFileDialog();
                openfile.Title 
    = "请选择客户端longin的图片";
                openfile.Filter 
    = "Login图片(*.jpg;*.bmp;*png)|*.jpeg;*.jpg;*.bmp;*.png|AllFiles(*.*)|*.*";
                
    if (DialogResult.OK == openfile.ShowDialog())
                {
                    
    try
                    {
                        Bitmap bmp 
    = new Bitmap(openfile.FileName);
                        pictureBox1.Image 
    = bmp;
                        pictureBox1.SizeMode 
    = PictureBoxSizeMode.Zoom;
                        MemoryStream ms 
    = new MemoryStream();
                        bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
                        
    byte[] arr = new byte[ms.Length];
                        ms.Position 
    = 0;
                        ms.Read(arr, 
    0, (int)ms.Length);
                        ms.Close();
                        
    //直接返这个值放到数据就行了
                        pic = Convert.ToBase64String(arr);
                    }
                    
    catch { }
                }
            }
    复制代码

     

       读取的方法也很简单, pic就是我们得到的图片字符串只要我们存储到数据库里,从下面的方法里读取就可以了

    需要注意的地方我都加的有注释

     

    代码

     

     

              大家看一下效果吧

     

     

     

    在这里我们只要单击选择图片直接就可以更换。这些很简单但是我个人感觉还是很常用的,而且网上关于这块的例子着实不少,不过真正能帮上忙的还真不多,因为我们的好几个项目里用到了这些方法,或多或少的还是有些员工不怎么会, 在这里贴一贴方便新手查看吧。呵呵

    下面的本例子的所有代码

     

    复制代码
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.IO;
    using System.Threading;

    namespace WindowsFormsApplication1
    {
        
    public partial class Form1 : Form
        {
            
    public Form1()
            {
                InitializeComponent();
            }

            
    string pic = "";
            
    //加载图片
            private void Form1_Load(object sender, EventArgs e)
            {
                
    try
                {
                    
    if (!string.IsNullOrEmpty(pic))
                    {
                        
    byte[] imageBytes = Convert.FromBase64String(pic);
                        MemoryStream memoryStream 
    = new MemoryStream(imageBytes, 0, imageBytes.Length);
                        memoryStream.Write(imageBytes, 
    0, imageBytes.Length);
                        Image image 
    = Image.FromStream(memoryStream);

                        
    // 将图片放置在 PictureBox 中
                        this.pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
                        
    this.pictureBox1.Image = image;
                    }
                }
                
    catch { }
            }

            
    //选择图片
            private void button1_Click(object sender, EventArgs e)
            {
                OpenFileDialog openfile 
    = new OpenFileDialog();
                openfile.Title 
    = "请选择客户端longin的图片";
                openfile.Filter 
    = "Login图片(*.jpg;*.bmp;*png)|*.jpeg;*.jpg;*.bmp;*.png|AllFiles(*.*)|*.*";
                
    if (DialogResult.OK == openfile.ShowDialog())
                {
                    
    try
                    {
                        Bitmap bmp 
    = new Bitmap(openfile.FileName);
                        pictureBox1.Image 
    = bmp;
                        pictureBox1.SizeMode 
    = PictureBoxSizeMode.Zoom;
                        MemoryStream ms 
    = new MemoryStream();
                        bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
                        
    byte[] arr = new byte[ms.Length];
                        ms.Position 
    = 0;
                        ms.Read(arr, 
    0, (int)ms.Length);
                        ms.Close();
                        pic 
    = Convert.ToBase64String(arr);
                    }
                    
    catch { }
                }
            }
        }
    }
    复制代码

     

    第三种方式   读成二进制后进行存取


     

     

       先把图片读成二进制以后再做处理,这样快捷而且代码相对少很多,还有就是感谢下面几位网友的提醒和建议,在这里我把我简单写的代码贴一下,怎么样存储到数据库的方法还是大家自己写我只提供存取的方法

     

    复制代码
       private void button1_Click(object sender, EventArgs e)
            {
                OpenFileDialog openfile 
    = new OpenFileDialog();
                openfile.Title 
    = "请选择客户端longin的图片";
                openfile.Filter 
    = "Login图片(*.jpg;*.bmp;*png)|*.jpeg;*.jpg;*.bmp;*.png|AllFiles(*.*)|*.*";
                
    if (DialogResult.OK == openfile.ShowDialog())
                {
                    
    try
                    {
                        
    //读成二进制
                        byte[] bytes = File.ReadAllBytes(openfile.FileName);
                        
    //直接返这个存储到数据就行了cmd.Parameters.Add("@image", SqlDbType.Image).Value = bytes;

                        
    //输出二进制  在这里把数据中取到的值放在这里byte[] bytes=(byte[])model.image;
                        pictureBox1.Image = System.Drawing.Image.FromStream(new MemoryStream(bytes));
                        
    this.pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;

                        
    // 如果保存成文件:
                        File.WriteAllBytes(@"d:\text.jpg", bytes);
                    }
                    
    catch { }
                }
            }
    复制代码
    展开全文
  • 数据库关系模式存取方式

    千次阅读 2016-05-27 23:01:08
    数据库的物理设计,数据库索引的相关笔记。 B+树索引 数据库中最普遍的使用方法。底层硬盘的存储也有使用B+树。 B+树属于多路平衡搜索树,理论复杂度和平衡二叉树相同操作都是log(n)。因为多路的特性,I/O操作上更...

    数据库的物理设计,数据库索引的相关笔记。

     B+树索引

    数据库中最普遍的使用方法。底层硬盘的存储也有使用B+树。

    B+树属于多路平衡搜索树,理论复杂度和平衡二叉树相同操作都是log(n)。因为多路的特性,I/O操作上更有优势,并且也让树的深度降低。所以,设计B+树时,是尽可能让树的深度降低的。

    只所以使用B+树而不是B-数,是因为B+树的关键字全在叶子节点。这样一来,硬盘一个簇可以存更多节点。可减少IO次数。

    Hash索引

    使用Hash算法计算出散列值,通过散列值快速定位查找的数据。

    Hash索引可能是访问数据库中数据的最快方法,因为Hash算法几乎可以认为是O(1)的。

    但是 Hash 索引本身由于其特殊性也带来了很多限制和弊端。

    (1)Hash可能出现碰撞,通常有链表法和开放寻址法来解决。如果碰撞多了,无疑降低了Hash索引的速度。

    (2)Hash计算出散列后,因为碰撞的原因,还需要进行实际数据对比。

    (3)Hash算法只能定位单个,无法进行范围查询。自然,如果是组合索引,也无法用部分索引键查询。

    聚簇存储

    可以类比成有序数组,相关属性按序排列。

    一个关系只能在一个聚簇中,其次不适用于经常更新的关系

    所以聚簇存储通常适用于:

    (1)经常一起进行连接操作的关系。

    (2)关系的一组属性经常出现在相等的比较条件中。

    (3)关系的属性上的值重复率很高。

     

     

    转载请注明:旅途@KryptosX » 数据库关系模式存取方式

    展开全文
  • 第一种方式文件夹与数据库配合近来做了不少关于这块功能,随着网络飞速发展,网络存取图片已不再是神话,而成为了一种时尚,如果是你是用Asp.net开发话,可能更多人会考虑使用数据库存储图片路经,而在...
  • 小谈c#数据库存取图片的方式

     第一种文件夹与数据库配合

     


            近来做了不少关于这块的功能 ,随着网络的飞速发展,网络存取图片已不再是神话,而成为了一种时尚,如果是你 是用Asp.net开发的话,可能更多的人会考虑使用数据库存储图片的路经,而在文件夹是存储图片的方式。这种方式主要的方法有两个一个就是怎么样读取图片,怎么样存储图上,读取的话我就不多说的这个是最简单的了,只要大家把地址=给存储图片的对象就行了,在取的时候一般要使用相对地址也就是“~” 如下所示

     

     

    ImageUrl="../CardDeal/SellCardZhi.jpg' 
    ImageUrl="~/CardDeal/SellCardZhi.jpg' 

     

     

    当然这前面要加上你自己的图片所在服务器的文件夹的名称

    我们来看是一下是怎么存储的吧,我常用的一个方法是这样的

     

    代码
     /// <summary>
        
    /// 上传图片
        
    /// </summary>
        
    /// <param name="FUSShopURL">FileUpload对象</param>
        
    /// <param name="UpladURL">图片要放到的目录名称</param>
        
    /// <returns>如果FileUpload不为空则返回上传后的图片位置,否则返回为空字符</returns>
        public  static  string  uploadImage(FileUpload FUSShopURL, string UpladURL)
        {
            
    if (FUSShopURL.HasFile)
            {
                
    //获取当前的时间,一当作图片的名字
                string fileName = DateTime.Now.ToString("yyyyMMddhhmmss"+ DateTime.Now.Millisecond.ToString();
                
    //获取图片的扩展名
                string Extent = System.IO.Path.GetExtension(FUSShopURL.PostedFile.FileName);
                
    //重命名图片
                fileName += Extent;
                
    //设置上传图片保存的文件夹
                string dir = System.Web.HttpContext.Current.Server.MapPath(UpladURL);
                
    //指定图片的路径及文件名
                string path = dir + "//" + fileName;
                
    //把上传得图片保存到指定的文件加中
                FUSShopURL.PostedFile.SaveAs(path);
                
    return  fileName;
            }
            
    else
            {
                
    return "";
            }
        }

     

    这个方法是与FileUpload控件 一起使用的,方法很简单大家一看就明白了。

    方法返回的就是一个相对的路经可以直接存储的数据里,然后从前台调用就可以了

     

    第二种直接把图片的Base64String码进行存取

     

              这种方法很方便,直接转化一下就行了,不需要书写很麻烦的路经问题

    先看一下是怎么存储到数据库的吧

            

    代码
    //选择图片
            private void button1_Click(object sender, EventArgs e)
            {
                OpenFileDialog openfile 
    = new OpenFileDialog();
                openfile.Title 
    = "请选择客户端longin的图片";
                openfile.Filter 
    = "Login图片(*.jpg;*.bmp;*png)|*.jpeg;*.jpg;*.bmp;*.png|AllFiles(*.*)|*.*";
                
    if (DialogResult.OK == openfile.ShowDialog())
                {
                    
    try
                    {
                        Bitmap bmp 
    = new Bitmap(openfile.FileName);
                        pictureBox1.Image 
    = bmp;
                        pictureBox1.SizeMode 
    = PictureBoxSizeMode.Zoom;
                        MemoryStream ms 
    = new MemoryStream();
                        bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
                        
    byte[] arr = new byte[ms.Length];
                        ms.Position 
    = 0;
                        ms.Read(arr, 
    0, (int)ms.Length);
                        ms.Close();
                        
    //直接返这个值放到数据就行了
                        pic = Convert.ToBase64String(arr);
                    }
                    
    catch { }
                }
            }

     

       读取的方法也很简单, pic就是我们得到的图片字符串只要我们存储到数据库里,从下面的方法里读取就可以了

    需要注意的地方我都加的有注释

     

    代码
    //加载图片
            private void Form1_Load(object sender, EventArgs e)
            {
                
    try
                {
                   // pic=........这一句换成从数据库里读取就可以了
                    
    //判断是否为空,为空时的不执行
                    if (!string.IsNullOrEmpty(pic))
                    {
                        
    //直接返Base64码转成数组
                        byte[] imageBytes = Convert.FromBase64String(pic);
                        
    //读入MemoryStream对象
                        MemoryStream memoryStream = new MemoryStream(imageBytes, 0, imageBytes.Length);
                        memoryStream.Write(imageBytes, 
    0, imageBytes.Length);
                        
    //转成图片
                        Image image = Image.FromStream(memoryStream);

                        
    //memoryStream.Close();//不要加上这一句否则就不对了

                        
    // 将图片放置在 PictureBox 中
                        this.pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
                        
    this.pictureBox1.Image = image;
                    }
                }
                
    catch { }
            }

     

     

     

              大家看一下效果吧

     

     

    第三种方式   读成二进制后进行存取

     


     

       先把图片读成二进制以后再做处理,这样快捷而且代码相对少很多,还有就是感谢下面几位网友的提醒和建议,在这里我把我简单写的代码贴一下,怎么样存储到数据库的方法还是大家自己写我只提供存取的方法

     

    代码
       private void button1_Click(object sender, EventArgs e)
            {
                OpenFileDialog openfile 
    = new OpenFileDialog();
                openfile.Title 
    = "请选择客户端longin的图片";
                openfile.Filter 
    = "Login图片(*.jpg;*.bmp;*png)|*.jpeg;*.jpg;*.bmp;*.png|AllFiles(*.*)|*.*";
                
    if (DialogResult.OK == openfile.ShowDialog())
                {
                    
    try
                    {
                        
    //读成二进制
                        byte[] bytes = File.ReadAllBytes(openfile.FileName);
                        
    //直接返这个存储到数据就行了cmd.Parameters.Add("@image", SqlDbType.Image).Value = bytes;

                        
    //输出二进制  在这里把数据中取到的值放在这里byte[] bytes=(byte[])model.image;
                        pictureBox1.Image = System.Drawing.Image.FromStream(new MemoryStream(bytes));
                        
    this.pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;

                        
    // 如果保存成文件:
                        File.WriteAllBytes(@"d:/text.jpg", bytes);
                    }
                    
    catch { }
                }
            }

    在这里我们只要单击选择图片直接就可以更换。这些很简单但是我个人感觉还是很常用的,而且网上关于这块的例子着实不少,不过真正能帮上忙的还真不多,因为我们的好几个项目里用到了这些方法,或多或少的还是有些员工不怎么会, 在这里贴一贴方便新手查看吧。呵呵

    下面的本例子的所有代码

     

    代码
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.IO;
    using System.Threading;

    namespace WindowsFormsApplication1
    {
        
    public partial class Form1 : Form
        {
            
    public Form1()
            {
                InitializeComponent();
            }

            
    string pic = "";
            
    //加载图片
            private void Form1_Load(object sender, EventArgs e)
            {
                
    try
                {
                    
    if (!string.IsNullOrEmpty(pic))
                    {
                        
    byte[] imageBytes = Convert.FromBase64String(pic);
                        MemoryStream memoryStream 
    = new MemoryStream(imageBytes, 0, imageBytes.Length);
                        memoryStream.Write(imageBytes, 
    0, imageBytes.Length);
                        Image image 
    = Image.FromStream(memoryStream);

                        
    // 将图片放置在 PictureBox 中
                        this.pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
                        
    this.pictureBox1.Image = image;
                    }
                }
                
    catch { }
            }

            
    //选择图片
            private void button1_Click(object sender, EventArgs e)
            {
                OpenFileDialog openfile 
    = new OpenFileDialog();
                openfile.Title 
    = "请选择客户端longin的图片";
                openfile.Filter 
    = "Login图片(*.jpg;*.bmp;*png)|*.jpeg;*.jpg;*.bmp;*.png|AllFiles(*.*)|*.*";
                
    if (DialogResult.OK == openfile.ShowDialog())
                {
                    
    try
                    {
                        Bitmap bmp 
    = new Bitmap(openfile.FileName);
                        pictureBox1.Image 
    = bmp;
                        pictureBox1.SizeMode 
    = PictureBoxSizeMode.Zoom;
                        MemoryStream ms 
    = new MemoryStream();
                        bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
                        
    byte[] arr = new byte[ms.Length];
                        ms.Position 
    = 0;
                        ms.Read(arr, 
    0, (int)ms.Length);
                        ms.Close();
                        pic 
    = Convert.ToBase64String(arr);
                    }
                    
    catch { }
                }
            }
        }
    }

     

     

     

     

                             

             欢迎大家转载,如有转载请注明文章来自:   http://sufei.cnblogs.com/   

    签名:做一番一生引以为豪的事业;在有生之年报答帮过我的人;并有能力帮助需要帮助的人;    

    QQ:361983679 Email:sufei.1013@163.com  MSN:sufei.1013@163.com 


    展开全文
  • 应用程序读取数据共有三种方式: (1)直接通过Command对象读取(但一次只能对一条数据,即表一行),读完后不断开连接。 (2)通过DataReader对象读取(类似单向管道似,一条一条读数据),读完后不断开连接...
  • 这篇文章主要介绍了如何基于java向mysql数据库存取图片,文中通过示例代码介绍非常详细,对大家学习或者工作具有一定参考学习价值,需要朋友可以参考下学mysql时候都是做个表格,放也都是文字内容,虽然...
  • 近来做了不少关于这块功能 ,随着网络飞速发展,网络存取图片已不再是神话,而成为了一种时尚,如果是你 是用Asp.net开发话,可能更多人会考虑使用数据库存储图片路经,而在文件夹是存储图片的方式。...
  • 这篇文章主要介绍了如何基于java向mysql数据库存取图片,文中通过示例代码介绍非常详细,对大家学习或者工作具有一定参考学习价值,需要朋友可以参考下学mysql时候都是做个表格,放也都是文字内容,虽然...
  • c#数据库存取图片三种方式

    千次阅读 2016-10-17 12:18:30
     近来做了不少关于这块功能 ,随着网络飞速发展,网络存取图片已不再是神话,而成为了一种时尚,如果是你 是用Asp.net开发话,可能更多人会考虑使用数据库存储图片路经,而在文件夹是存储图片的方式。...
  • Android对MySQL数据库存取图片

    千次阅读 2019-08-20 17:31:09
    Android数据库存取图片通常使用两种方式,一种是保存图片所在路径,二是将图片以二进制形式存储(sqlite 3支持BLOB数据类型)。对于两种方法使用,好像第二种方法不如第一种方法更受程序员欢迎,他们认为,在...
  • 这篇文章主要介绍了如何基于java向mysql数据库存取图片,文中通过示例代码介绍非常详细,对大家学习或者工作具有一定参考学习价值,需要朋友可以参考下学mysql时候都是做个表格,放也都是文字内容,虽然...
  • 二进制大对象BLOB(Binary Large Object)其存取的方式与普通数据有所区别。本文将介绍利用ADO在数据库存取BLOB数据具体实现过程,并给出实现图像存取显示完整示例工程。二、前期准备首先我们建立一张名为...
  • 第一种方式 文件夹与数据库配合近来做了不少关于这块功能 ,随着网络飞速发展,网络存取图片已不再是神话,而成为了一种时尚,如果是你 是用Asp.net开发话,可能更多人会考虑使用数据库存储图片路经,而在...
  • 数据库存取图片

    2015-11-27 11:26:33
    数据库存取图片通常使用两种方式,一种是保存图片所在路径,二是将图片以二进制形式存储(sqlite3支持BLOB数据类型)。对于两种方法使用,好像第二种方法不如第一种方法更受程序员欢迎,他们认为,在很多...
  • 第一种方式 文件夹与数据库配合近来做了不少关于这块功能 ,随着网络飞速发展,网络存取图片已不再是神话,而成为了一种时尚,如果是你 是用Asp.net开发话,可能更多人会考虑使用数据库存储图片路经,而在...
  • 第一种方式 文件夹与数据库配合近来做了不少关于这块功能 ,随着网络飞速发展,网络存取图片已不再是神话,而成为了一种时尚,如果是你 是用Asp.net开发话,可能更多人会考虑使用数据库存储图片路经,而在...
  • 我们对文件一类东西存入数据库,一般就是存放一个文件相对路径,到要使用该文件是就根据该相对路径进行相应获取,而我现在要做是通过PB中数据流的方式把文件以二进制的方式进行存取。该方法通过数据流...
  • ORM作用是在关系型数据库和业务实体对象之间进行映射,就不用再去和复杂SQL语句打交道,只需要简单操作对象属性和方法就可以了, ORM表现方式就是编写数据模型类,这些类可以写到任何文件中,通常卸载每个...
  • 对于两种方法的使用,好像第二种方法不如第一种方法更受程序员欢迎,他们认为,在很多数据库语言里,处理大字段都是不容易的,像图片这样的文件放在数据库里会有问题:对数据库的读写速度永远赶不上文件系统的处理...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,025
精华内容 810
关键字:

数据库的存取方式