保存图片到数据库

合集下载

C# 图片保存到数据库和从数据库读取图片并显示

C# 图片保存到数据库和从数据库读取图片并显示

C# 图片保存到数据库和从数据库读取图片并显示图片保存到数据库的方法:public void imgToDB(string sql){ //参数sql中要求保存的imge变量名称为@images//调用方法如:imgToDB("update UserPhoto set Photo=@images where UserNo='" + temp + "'");FileStream fs = File.OpenRead(t_photo.Text);byte[] imageb = new byte[fs.Length];fs.Read(imageb, 0, imageb.Length);fs.Close();SqlCommand com3 = new SqlCommand (sql,con);com3.Parameters.Add("@images", SqlDbType.Image).Value = imageb;if (com3.Connection.State == ConnectionState.Closed)com3.Connection.Open();try{com3.ExecuteNonQuery();}catch{ }finally{ com3.Connection.Close(); }}数据库中读出图片并显示在picturebox中:方法一:private void ShowImage(string sql){//调用方法如:ShowImage("select Photo from UserPhoto where UserNo='" + userno +"'");SqlCommand cmd = new SqlCommand(sql, conn);conn.Open();byte[] b= (byte[])cmd.ExecuteScalar();if (b.Length 〉0){MemoryStream stream = new MemoryStream(b, true);stream.Write(b, 0, b.Length);pictureBox1.Image = new Bitmap(stream);stream.Close();}conn.Close();}方法二:当在dg中选中某行时:private void dg_MouseUp(object sender, MouseEventArgs e){//整行选择if (e.Button == System.Windows.Forms.MouseButtons.Left){//用户编号,姓名,性别,身份证号,籍贯,学院,系所,校区,部门,电话,照片//显示相片object imgobj=dg[10, dg.CurrentRow.Index].Value;if (imgobj != null && !Convert.IsDBNull(imgobj)){byte[] imgb = (byte[])imgobj;MemoryStream memStream = new MemoryStream(imgb);try{Bitmap myimge = new Bitmap(memStream);this.pictureBox1.Image = myimge;}catch{DB.msgbox("从数据库读取相片失败!");}}elsepictureBox1.Image = null;}}。

C#保存PictureBox中的图片到数据库,并从数据库读取图片显示到PictrueBox。。。

C#保存PictureBox中的图片到数据库,并从数据库读取图片显示到PictrueBox。。。

C#保存PictureBox中的图⽚到数据库,并从数据库读取图⽚显⽰到PictrueBox。

下⾯是两段关键代码:/// <summary>///将⼀张图⽚转换为字节///</summary>///<param name="img">图⽚</param>///<param name="imgFormat">保存图⽚的类型</param>///<returns>byte[]</returns>public byte[] ImgToByte(Image img,System.Drawing.Imaging.ImageFormat imgFormat){Bitmap bmp = new Bitmap(img);MemoryStream memStream = new MemoryStream();bmp.Save(memStream, imgFormat);memStream.Seek(0, SeekOrigin.Begin); //及时定位流的开始位置byte[] btImage = new byte[memStream.Length];memStream.Read(btImage, 0, btImage.Length);memStream.Close();return btImage;}将PictureBox中的图⽚以参数形式传进,另⼀个参数是要转换成的图⽚类型。

这个函数返回⼀个byte[]数组,调⽤这个函数,将返回的数组保存到数据库中就可以了。

数据库的相应字段类型是 image 类型。

需要特别注意的是这句 memStream.Seek(0, SeekOrigin.Begin); //及时定位流的开始位置 如果没有这句话,在后边读取数据库显⽰图⽚的时候就会报错,“⽆效参数”。

将图片储存在MySQL数据库中的几种方法

将图片储存在MySQL数据库中的几种方法

将图⽚储存在MySQL数据库中的⼏种⽅法通常对⽤户上传的图⽚需要保存到数据库中。

解决⽅法⼀般有两种:1、将图⽚保存的路径存储到数据库;2、将图⽚以⼆进制数据流的形式直接写⼊数据库字段中。

以下为具体⽅法:⼀、保存图⽚的上传路径到数据库: string uppath="";//⽤于保存图⽚上传路径 //获取上传图⽚的⽂件名 string fileFullname = this.FileUpload1.FileName; //获取图⽚上传的时间,以时间作为图⽚的名字可以防⽌图⽚重名 string dataName = DateTime.Now.ToString("yyyyMMddhhmmss"); //获取图⽚的⽂件名(不含扩展名) string fileName = fileFullname.Substring(stIndexOf("\\") + 1); //获取图⽚扩展名 string type = fileFullname.Substring(stIndexOf(".") + 1); //判断是否为要求的格式 if (type == "bmp" || type == "jpg" || type == "jpeg" || type == "gif" || type == "JPG" || type == "JPEG" || type == "BMP" || type == "GIF") { //将图⽚上传到指定路径的⽂件夹 this.FileUpload1.SaveAs(Server.MapPath("~/upload") + "\\" + dataName + "." + type); //将路径保存到变量,将该变量的值保存到数据库相应字段即可 uppath = "~/upload/" + dataName + "." + type; }⼆、将图⽚以⼆进制数据流直接保存到数据库:引⽤如下命名空间:using System.Drawing; using System.IO; using System.Data.SqlClient; 设计数据库时,表中相应的字段类型为iamge 保存: //图⽚路径 string strPath = this.FileUpload1.PostedFile.FileName.ToString (); //读取图⽚ FileStream fs = new System.IO.FileStream(strPath, FileMode.Open, FileAccess.Read); BinaryReader br = new BinaryReader(fs); byte[] photo = br.ReadBytes((int)fs.Length); br.Close(); fs.Close(); //存⼊ SqlConnection myConn = new SqlConnection("Data Source=.;Initial Catalog=stumanage;User ID=sa;Password=123"); string strComm = " INSERT INTO stuInfo(stuid,stuimage) VALUES(107,@photoBinary )";//操作数据库语句根据需要修改 SqlCommand myComm = new SqlCommand(strComm, myConn); myComm.Parameters.Add("@photoBinary", SqlDbType.Binary, photo.Length); myComm.Parameters["@photoBinary"].Value = photo; myConn.Open(); if (myComm.ExecuteNonQuery() > 0) { bel1.Text = "ok"; } myConn.Close(); 读取: ...连接数据库字符串省略 mycon.Open(); SqlCommand command = new SqlCommand("select stuimage from stuInfo where stuid=107", mycon);//查询语句根据需要修改 byte[] image = (byte[])command.ExecuteScalar (); //指定从数据库读取出来的图⽚的保存路径及名字 string strPath = "~/Upload/zhangsan.JPG"; string strPhotoPath = Server.MapPath(strPath); //按上⾯的路径与名字保存图⽚⽂件 BinaryWriter bw = new BinaryWriter(File.Open(strPhotoPath,FileMode.OpenOrCreate)); bw.Write(image); bw.Close(); //显⽰图⽚ this.Image1.ImageUrl = strPath; //采⽤这两种⽅式可以根据实际需求灵活选择。

SQLServer数据库中如何存储图片--教程

SQLServer数据库中如何存储图片--教程

图片文件在SQL Server数据库的存取在很多时候,我们需要将图片文件存入到SQL Server数据库中,并且在使用的时候将数据库中的图片取出。

本文将描述用C#语言来实现这一过程。

数据库表结构如果要将图片数据存入SQL Server数据库的表中,我们必须使用SQL Server的image 数据类型,在被试验中,我们将使用如下的语句创建数据库表StudentInfo:CREATE TABLE [dbo].[StudentInfo]([ID] [int] IDENTITY(1,1)NOT NULL,[Name] [varchar](50)COLLATE Chinese_PRC_CI_AS NULL,[Age] [int] NULL,[Sex] [nchar](10)COLLATE Chinese_PRC_CI_AS NULL,[Class] [varchar](15)COLLATE Chinese_PRC_CI_AS NULL,[Hobby] [varchar](50)COLLATE Chinese_PRC_CI_AS NULL,[Picture] [image] NULL)其中字段Picture字段为image数据类型,用来保存学生的照片。

图片存入数据库要将图片数据存入到数据库表的image数据类型的字段中,首先需要将图片文件中的数据读入到内存字节中,在将内存字节存入数据库中,具体示例代码如下:private void btnUpload_Click(object sender, EventArgs e){//上传图片到数据库OpenFileDialog openDlg = new OpenFileDialog();openDlg.Filter = "图片文件(*.jpg)|*.jpg";string filePath = "";if (openDlg.ShowDialog() == DialogResult.OK){filePath = openDlg.FileName;this.txtFilePath.Text = filePath;this.picShow.ImageLocation = filePath;//打开文件流,用来读取图片文件中的数据FileStream stream = new FileStream(filePath,FileMode.Open,FileAccess.Read);//将文件流中的数据存入内存字节组中byte[] buffer = new byte[stream.Length];stream.Read(buffer,0,(int)stream.Length);stream.Close();try{//调用存储图片数据的存取过程string strName = Path.GetFileName(filePath);string connString = "Data Source=.;Initial Catalog=StuDB;Persist SecurityInfo=True";SqlConnection conn = new SqlConnection(connString);conn.Open();SqlCommand cmd = new SqlCommand("proc_UploadPicture", conn);mandType = CommandType.StoredProcedure;cmd.Parameters.Add("@ID", SqlDbType.Int).Value = 1;cmd.Parameters.Add("@Picture", SqlDbType.Image).Value = buffer;cmd.Parameters.Add("@Ext", SqlDbType.VarChar).Value = strName;cmd.ExecuteNonQuery();conn.Close();}catch (Exception ex){MessageBox.Show(ex.Message);}}}存储过程proc_UploadPicture代码如下:Create procedure [dbo].[proc_UploadPicture]@ID int,@Picture imageASupdate StudentInfo set Picture = @Picturewhere ID = @ID从数据库读取图片要从数据库中获取图片数据,并将图片显示在界面上,需要将数据库中的图片数据读入到内存中,在将内存的数据用位图来格式化,并将位图显示在界面的PictureBox控件中。

图片存入mySql数据库

图片存入mySql数据库

我在程序代码里贴了向Mysql数据库写入image代码的程序,可是好多人都是Java的初学者,对于这段代码,他们无法将它转换成jsp,所以我在这在写一下用jsp怎样向数据库写入图像文件。

大家先在数据库建这样一张表,我下面的这些代码对任何数据库都通用,只要支持blob类型的只要大家将连接数据库的参数改一下就可以了。

SQL>create table image(id int,content varchar(200),image blob);如果在sqlserver2000的数据库中,可以将blob字段换为image类型,这在SqlServer2000中是新增的。

testimage.html文件内容如下:<HTML><HEAD><TITLE>Image File </TITLE><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></HEAD><FORM METHOD=POST ACTION="testimage.jsp"><INPUT TYPE="text" NAME="content"><BR><INPUT TYPE="file" NAME="image"><BR><INPUT TYPE="submit"></FORM><BODY></BODY></HTML>我们在Form的action里定义了一个动作testimage.jsp,它的内容如下:<%@ page contentType="text/html;charset=gb2312"%><%@ page import="java.sql.*" %><%@ page import="java.util.*"%><%@ page import="java.text.*"%><%@ page import="java.io.*"%><html><body><%Class.forName("org.gjt.mm.mysql.Driver").newInstance();Stringurl="jdbc:mysql://localhost/mysql?user=root&password=&useUnicode=true&characterEncoding= 8859_1";//其中mysql为你数据库的名字,user为你连接数据库的用户,password为你连接数据库用户的密码,可自己改Connection conn= DriverManager.getConnection(url);String content=request.getParameter("content");String filename=request.getParameter("image");FileInputStream str=new FileInputStream(filename);String sql="insert into test(id,content,image) values(1,?,?)"; PreparedStatement pstmt=dbconn.conn.prepareStatement(sql);pstmt.setString(1,content);pstmt.setBinaryStream(2,str,str.available());pstmt.execute();out.println("Success,You Have Insert an Image Successfully");%>下面我写一个测试image输出的例子看我们上面程序写的对不对,testimageout.jsp的内容如下:<%@ page contentType="text/html;charset=gb2312"%><%@ page import="java.sql.*" %><%@ page import="java.util.*"%><%@ page import="java.text.*"%><%@ page import="java.io.*"%><html><body><%Class.forName("org.gjt.mm.mysql.Driver").newInstance();Stringurl="jdbc:mysql://localhost/mysql?user=root&password=&useUnicode=true&characterEncoding= 8859_1";//其中mysql为你数据库的名字,user为你连接数据库的用户,password为你连接数据库用户的密码,可自己改Connection conn= DriverManager.getConnection(url);String sql = "select image from test where id=1";Statement stmt=null;ResultSet rs=null;try{stmt=conn.createStatement();rs=stmt.executeQuery(sql);}catch(SQLException e){}try {while(rs.next()) {res.setContentType("image/jpeg");ServletOutputStream sout = response.getOutputStream();InputStream in = rs.getBinaryStream(1);byte b[] = new byte[0x7a120];for(int i = in.read(b); i != -1;){sout.write(b);in.read(b);}sout.flush();sout.close();}}catch(Exception e){System.out.println(e);}%></body></html>你运行这个程序,你就会看到刚才你写入美丽的图片就会显示在你面前。

如何将图片保存到SqlServer、Oracle、Access数据库中。-懒猫星空--...

如何将图片保存到SqlServer、Oracle、Access数据库中。-懒猫星空--...

如何将图片保存到SqlServer、Oracle、Access数据库中。

-懒猫星空--...如何将图片保存到SqlServer、Oracle、Access数据库中。

首先,我们要明白图片是以二进制的形式保存在数据库中的,那么把图片保存到数据库中的步骤大体上有这几步1.将图片转换为二进制数组(byte[]);2.把转换后的二进制数组(byte[])作为参数传递给要执行的Command;3.执行Command;首先,如何把图片转换成byte[],如果你使用的是2.0,那么你可以使用FileUpLoad控件来实现byte[] fileData = this.FileUpload1.FileBytes;如果你用的是1.1或者你在创建WinForm那么你可以使用下面的方法来把图片转换为byte[] public byte[] getBytes(string filePath){System.IO.FileStream fs = new System.IO.FileStream(filePath, System.IO.FileMode.Open);byte[] imgData = new byte[fs.Length];fs.Read(imgData, 0, (int)fs.Length);return imgData;}1.SqlServer数据库。

SqlServer有Image字段类型,最大可以存储2G的数据。

byte[] fileData = this.FileUpload1.FileBytes;string sql = "insert into t_img(img) values (@img)";string strconn = System.Configuration.ConfigurationManager.ConnectionStrings[ "fengdongDB"].T oString();SqlConnection sqlConn = new SqlConnection(strconn);SqlCommand sqlComm = new SqlCommand(sql, sqlConn);sqlComm.Parameters.Add("@img", SqlDbType.Image);//添加参数sqlComm.Parameters["@img"].Value = fileData;//为参数赋值sqlConn.Open();sqlComm.ExecuteNonQuery();sqlConn.Close();2.Oracle数据库。

图片以二进制方式存入SQL Server数据库

图片以二进制方式存入SQL Server数据库

1、建所需数据库和表,语句如下:--建立数据库create database test--使用该数据库use test--建立存放图片的表create table piclist(id int Identity primary key,pic Image not null)2、制作上传图片的模块,代码如下:前台html代码:<%@ Page Language="C#" AutoEventWireup="true" CodeFile="UpPhoto.aspx.cs" Inherits="Test_UpPhoto" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml" ><head runat="server"><title>无标题页</title></head><body><form id="form1" runat="server"><div><input id="UpPhoto" name="UpPhoto" runat="server" type="file" /><asp:Button id="btnAdd" runat="server" Text="上传"OnClick="btnAdd_Click"></asp:Button></div></form></body></html>后台代码:using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.IO;using System.Data.SqlClient;public partial class Test_UpPhoto : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){}protected void btnAdd_Click(object sender, EventArgs e){//获得图象并把图象转换为byte[]HttpPostedFile upPhoto = UpPhoto.PostedFile;int upPhotoLength = upPhoto.ContentLength;byte[] PhotoArray = new Byte[upPhotoLength];Stream PhotoStream = upPhoto.InputStream;PhotoStream.Read(PhotoArray, 0, upPhotoLength);//连接数据库string ConStr = "server=(local);user id=sa;pwd=sa;database=test";SqlConnection conn = new SqlConnection(ConStr);string strSql = "Insert into piclist(pic) values(@pic)";SqlCommand cmd = new SqlCommand(strSql, conn);cmd.Parameters.Add("@pic", SqlDbType.Image);cmd.Parameters["@pic"].Value = PhotoArray;conn.Open();cmd.ExecuteNonQuery();conn.Close();Response.Write("图片上传成功");}}3、制作显示图片的模块(单独显示图片,即没用到datalist):后台代码:using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Data.SqlClient;using System.IO;public partial class Test_ShowPhoto : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){if(!Page.IsPostBack){//连接数据库string ConnStr = "server=(local);user id=sa;pwd=sa;database=test";string strSql = "select * from piclist";SqlConnection conn = new SqlConnection(ConnStr);conn.Open();SqlCommand cmd=new SqlCommand(strSql,conn);SqlDataReader reader = cmd.ExecuteReader();while (reader.Read()){Response.ContentType = "application/octet-stream";Response.BinaryWrite((Byte[])reader["pic"]);Response.Write("successful");}reader.Close();conn.Close();Response.End();}}}补充步骤3,用datalist显示图片方法:建立两个 页面,名称为piclist.aspx和StreamImg.aspx。

关于图片或者文件在数据库的存储方式归纳

关于图片或者文件在数据库的存储方式归纳

关于图⽚或者⽂件在数据库的存储⽅式归纳据我了解,互联⽹环境中,⼤访问量,数据库速度和性能⽅⾯很重要。

⼀般在数据库存储图⽚的做法⽐较少,更多的是将图⽚路径存储在数据库中,展⽰图⽚的时候只需要连接磁盘路径把图⽚载⼊进来即可。

因为图⽚是属于⼤字段。

⼀张图⽚可能1m到⼏m。

有个原则:图⽚尽量不要存储在数据库中(是指不要⼆进制形式保存到字段,⽽只保存图⽚的路径)。

这样的⼤字段数据会加重数据库的负担,拖慢数据库。

在⼤并发访问的情况下很重要。

这是⼀个经验。

去看看dba对数据库性能调优⽅⾯的分析都能得到这个答案的:就是图⽚不要存储在数据库中。

⼆、数据库中保存图⽚路径⼀般是这样⼦的:按照年⽉⽇⽣成路径。

具体是按照年⽉⽇还是按照年⽉去⽣成路径,根据⾃⼰需要(不⼀定是按照⽇期去⽣成)。

理解为什么要分散到多个⽂件夹中去才是关键,涉及到⼀个原理就明⽩了:操作系统对单个⽬录的⽂件数量是有限制的。

当⽂件数量很多的时候。

从⽬录中获取⽂件的速度就会越来越慢。

所以为了保持速度,才要按照固定规则去分散到多个⽬录中去。

图⽚分散到磁盘路径中去。

数据库字段中保存的是类似于这样⼦的”images/2012/09/25/ 1343287394783.jpg”原来上传的图⽚⽂件名称会重新命名保存,⽐如按照时间戳来⽣成,1343287394783. jpg。

这样⼦是为了避免⽂件名重复,多个⼈往同⼀个⽬录上传图⽚的时候会出现。

反正⽤什么样的规则命名图⽚,只要做到图⽚名称的唯⼀性即可。

⽐如⽹站的并发访问量⼤,⽬录的⽣成分得⽉细越好。

⽐如精确到⼩时,⼀个⼩时都可以是⼀个⽂件夹。

同时0.001秒有两个⽤户同时在上传图⽚(因为那么就会往同⼀个⼩时⽂件夹⾥⾯存图⽚)。

因为时间戳是精确到秒的。

为了做到图⽚名称唯⼀性⽽不⾄于覆盖,⽣成可以在在时间戳后⾯继续加毫秒微秒等。

总结的规律是,并发访问量越⼤。

就越精确就好了。

我现在还没碰到需要这么精细的。

概率⽐较少。

有个⽅⾯总结⼀下:为什么保存的磁盘路径,是”images/2012/09/25/1343287394783.jpg”,⽽不是” /images/2012/09/25/ 1343287394783.jpg”(最前⾯带有斜杠)我的理解:连那个斜杠都不要。

怎样往SQL数据库存放图象文件

怎样往SQL数据库存放图象文件

怎样往SQL数据库存放图象文件2006-08-19 18:38procedure SavePicture(img:TImage);varJPGImg: TJPEGImage;ADOData: TADOBlobStream;beginJPGImg := TJPEGImage.Create;ADOData :=TADOBlobStream.Create(TBlobField(DataModule1.PatientInfoTable.Fie ldByName('图像1')), bmWrite);tryJPGImg.Assign(img.Picture.Bitmap);JpgImg.SaveToStream(ADOData);finallyJPgImg.Free;ADOData.Free;end;end;读取代码如下:procedure LoadPicture(img: TImage);varPicData: TADOBlobStream;SQL Server存储图像数据的策略与方法目前对于图像数据的管理大都采用表+实体的方法,即图像数据以文件形式存放于指定的计算机目录下,在数据库表中只反映图像数据文件的存储路径。

这种管理模式,给数据的维护增加了难度,同时,也给数据的安全带来一定的隐患。

因此,要真正做到各类数据在数据库中安全管理,研究和探索直接将图像数据存储在数据库关系表中的方法是非常必要的。

笔者在Visual Basic 6.0开发环境中,采用客户机/服务器的工作方式,针对SQL Server数据库关系表中存储图像数据的问题进行了初步探讨,提出了一套基本解决方案,供读者参考。

一、存储图像数据的策略图像数据库技术一直致力于解决海量数字图像的有效存储和管理问题。

它是数据库技术的继承和发展,一方面,图像数据和文本数据存在着本质的区别,在文本数据领域得以成功应用的传统数据库技术,如果一成不变的照搬到图像数据库领域,结果往往是低效,甚至无效;另一方面,传统数据库的许多成果,如SQL语言、索引技术等都值得图像数据库借鉴。

介绍如何将图片存入数据库

介绍如何将图片存入数据库

本实例主要介绍如何将图片存入数据库。

将图片存入数据库,首先要在数据库中建立一张表,将存储图片的字段类型设为Image类型,用FileStream类、BinaryReader把图片读成字节的形式,赋给一个字节数组,然后用ADO.SqlCommand对象的ExecuteNonQuery()方法来把数据保存到数据库中。

主要代码如下:private void button1_Click(object sender, EventArgs e){openFileDialog1.Filter = "*jpg|*.JPG|*.GIF|*.GIF|*.BMP|*.BMP";if(openFileDialog1.ShowDialog()==DialogResult.OK){string fullpath =openFileDialog1.FileName;//文件路径FileStream fs = new FileStream(fullpath, FileMode.Open);byte[] imagebytes =new byte[fs.Length];BinaryReader br = new BinaryReader(fs);imagebytes = br.ReadBytes(Convert.ToInt32(fs.Length));//打开数据库SqlConnection con = new SqlConnection("server=(local);uid=sa;pwd=;database=db_05");con.Open();SqlCommand com = new SqlCommand("insert into tb_08 values(@ImageList)",con);com.Parameters.Add("ImageList", SqlDbType.Image);com.Parameters["ImageList"].Value = imagebytes;com.ExecuteNonQuery();con.Close();}}本实例主要介绍如何从数据库中把图片读出来。

往MySQL中存储图片的方法

往MySQL中存储图片的方法

往MySQL中存储图⽚的⽅法1 介绍在设计到数据库的开发中,难免要将图⽚或⾳频⽂件插⼊到数据库中的情况。

⼀般来说,我们可以同过插⼊图⽚⽂件相应的存储位置,⽽不是⽂件本⾝,来避免直接向数据库⾥插⼊的⿇烦。

但有些时候,向MySQL中插⼊图⽚更加容易管理。

那么在MySQL中该怎么存储呢?参考资料[1]中有个相当清晰的例⼦,不过是基于MySQL图形界⾯的查询⼯具Query Brower的,你的机⼦上没有安装的话,可能得不到很好的理解。

我在这⾥不在赘述,更详细的资料请看给出的链接吧。

还有,[1]中的例⼦其实只是向我们说明了Query Brower的易⽤和强⼤,对我们在开发中实际应⽤不是很⼤。

所以下⾯就让我们⽤JAVA写⼀个向MySQL中存储的简单实例。

2 建表⾸先,先要在数据库中建表。

我在名为test的数据库下建⽴了⼀个叫pic的表。

该表包括3列,idpic, caption和img。

其中idpic 是主键,caption是对图⽚的表述,img是图像⽂件本⾝。

建表的SQL语句如下:DROP TABLE IF EXISTS `test`.`pic`;CREATE TABLE `test`.`pic` (`idpic` int(11) NOT NULL auto_increment,`caption` varchar(45) NOT NULL default '',`img` longblob NOT NULL,PRIMARY KEY (`idpic`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;将上⾯的语句输⼊到命令⾏中(如果安装了Query Brower,你可以按照参考[1]中的指⽰来建表,那样会更加⽅便。

),执⾏,表建⽴成功。

3 实现图像存储类表完成后,我们就开始写个Java类,来完成向数据库中插⼊图⽚的操作。

我们知道,Java与数据库连接是通过JDBC driver来实现的。

sqlserver存储图片

sqlserver存储图片

sql server存储图片2011-09-14 20:17 55人阅读评论(8) 收藏举报一般情况下,将图片保存在服务器的某个目录下,在数据库中存储此图片的地址,这样做的好处很明显1. 可以节省数据库的存储空间2. 当数据库崩溃后,图片资源不会丢失3. 向数据库中插入图片时,需要先将图片压缩成二进制表示形式,而从数据库中查询图片时,则需要将二进制流转换为图片,这在频繁查询时会影响程序的性能4. ....下面从纯技术的角度解释如何将图片插入数据库中。

首先在sql server中新建一个表Images,sql语句如下:1.create table Images2.(3. BLODID int identity not null,4. BLOBData image not null5.)其中BLOBData字段采用image数据类型,这是sql server中用于存储图片的一种数据类型下面阐述一下程序的思路1. 点击“浏览”按钮打开选择对话框,用户可以选择想要存储到数据库中的图片2. 点击“存储图片”按钮,将图片插入到数据库中3. 点击”读取图片“按钮,将图片从数据库中查询出来具体步骤如下:1. 新建一个winform窗体,放置一个文本框,两个按钮,一个OpenFileDialog控件,一个PictureBox控件界面布局图下:2.声明全局变量filename:view plain1.private string filename = string.Empty;在”浏览“按钮的单击事件中添加如下代码:view plain1.if (this.openFileDialog1.ShowDialog() == DialogResult.OK)2. {3. filename = this.openFileDialog1.FileName;4. }3.在”存储图片“按钮的单击事件中添加如下代码:view plain1.try2. {3.string strConn = "user id=sa;password=sa;initial catalog=MyTest;Server=YHB;Connect Timeout=30";4. SqlConnection connection = new SqlConnection(strConn);5.string sql = "insert into Images (blobdata) values (@blobdata)";6. SqlCommand command = new SqlCommand(sql, connection);7.//图片路径8.string picturePath = @"D:\My Documents\My Pictures\000_d74047f595809456636fd470a00f0ff8.jpg";9.10. FileStream fs = new FileStream(picturePath, FileMode.Open, FileAccess.Read);11. Byte[] mybyte = new byte[fs.Length];12. fs.Read(mybyte,0,mybyte.Length);13. fs.Close();14. SqlParameter prm = new SqlParameter15."@blobdata", SqlDbType.VarBinary, mybyte.Length);16. prm.Value = mybyte;17. command.Parameters.Add(prm);18.19. connection.Open();20. command.ExecuteNonQuery();21. connection.Close();22. MessageBox.Show("存储成功");23. }24.catch (Exception ex)25. {26. MessageBox.Show(ex.Message);27. }4.在”读取图片“按钮的单击事件中添加如下代码:1.try2. {3.//创建数据库连接字符串4.string strConn = "user id=sa;password=sa;initial catalog=MyTest;Server=YHB;Connect Timeout=30";5.//创建SqlConnection对象6. SqlConnection connection = new SqlConnection(strConn);7.//打开数据库连接8. connection.Open();9.//创建SQL语句10.string sql = "select blodid,blobdata from Images orderby blodid";11.//创建SqlCommand对象12. SqlCommand command = new SqlCommand(sql, connection);13.//创建DataAdapter对象14. SqlDataAdapter dataAdapter = new SqlDataAdapter(command);15.//创建DataSet对象16. DataSet dataSet = new DataSet();17. dataAdapter.Fill(dataSet, "BLOBTest");18.int c = dataSet.Tables["BLOBTest"].Rows.Count;19.if (c > 0)20. {21. Byte[] mybyte = new byte[0];22. mybyte = (Byte[])(dataSet.Tables["BLOBTest"].Rows[c - 1]["BLOBData"]);23. MemoryStream ms = new MemoryStream(mybyte);24. pictureBox1.Image = Image.FromStream(ms);25. }26. connection.Close();27.28. }29.catch (Exception ex)30. {31. MessageBox.Show(ex.Message);32. }搞定,事件比较紧,很多注释没写,会尽快加上。

MYSQL保存图片示例

MYSQL保存图片示例
<html xmlns="/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>上传图片</title>
</head>
<body>
保存图片 1、 创建数据表保存图片 CREATE TABLE images(
id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
image BLOB
);
说明:
id----主键
image----用来保存图片的 blob 对象字段。
2、 PHP 脚本上传图片 上传界面 upload.html: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd">
显示图片 图片读取显示脚本 show.php: <?php include( "class.Mysql.php" ); $id = intval($_GET['id']); if($id>0){
$conn = new Mysql(); $conn->connect( 'localhost', 'root', '123456','test'); $sql = "SELECT * FROM `images` WHERE `id`={$id}"; $rs = $conn->getOne($sql); if(!empty($rs)){

图片上传保存到access数据库

图片上传保存到access数据库
</form>
</center>
</body>
</html>
二、 图片的上传与保存程序process.asp
<%
response.buffer=true
formsize=request.totalbytes
formdata=request.binaryread(formsize)
mydata=midb(formdata,datastart,dataend)
set connGraph=server.CreateObject("ADODB.connection")
connGraph.Open "Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=" & server.MapPath("images.mdb")
请输入要显示图片的序号:<input type=id name=id>
<input type=submit name=ok value="提交">
</form>
</center>
</body>
</html>
第二步、设计一个上传的表单,根据要求可简可繁。
第三步、设计后台的图片处理程序,可分为图片上传保存程序和图片读取程序。
第四步、图片显示。
下面给出程序并分别做介绍。
一、 表单程序updata.html
它的功能是为上传提供一个界面,表单的enctype属性为multipart/form-data,它是设置表单的MIME编码的,只有使用了它才能完整地传送文件的数据。

VB6 保存和读取图片到数据库

VB6 保存和读取图片到数据库

VB6 保存和读取图片到数据库dim stm as ADODB.Streamdim rs as ADODB.Recordsetsub SavePictureToDB(cn As ADODB.Connection) '将图片存入数据库On Error GoTo EHSet stm = New ADODB.Streamrs.Open "select ImagePath,ImageValue from tbl_Image", cn, adOpenKeyset, adLockOptimisticCommonDialog1.ShowOpenText1.Text = CommonDialog1.FileNameWith stm.Type = adTypeBinary.Open.LoadFromFileCommonDialog1.FileNameEnd WithWith rs.AddNew.Fields("ImagePath") =Text1.Text.Fields("ImageValue") =stm.Read.UpdateEnd Withrs.CloseSet rs = NothingExit SubEH: MsgBox Err.Description, vbInformation, "Error"End SubSub LoadPictureFromDB(cn AsADODB.Connection)'载数据库中读出图片On Error GoTo EHDim strTemp As StringSet stm = New ADODB.StreamstrTemp = "c:/temp.tmp" '临时文件,用来保存读出的图片rs.Open "select ImagePath,ImageValue from tbl_image", cn, , , adCmdTextWith stm.Type = adTypeBinary.Open.Write rs("ImageValue").SaveToFile strTemp, adSaveCreateOverWrite.CloseEnd WithImage1.Picture = LoadPicture(strTemp)Set stm = Nothingrs.CloseSet rs = NothingExit SubEH: MsgBox Err.Description, vbInformation, "Error"End Sub也可用FileSystemObject的方式来保存Dim Sql As StringDim fs As New FileSystemObjectSub SavePicture()Dim sByte() As ByteDim bIsNull As BooleanIf fs.FileExists(g_FilePath) ThenOpen g_FilePath For Binary Access Read As #1ReDim sByte(1 To LOF(1))Get #1, 1, sByte()Close #1bIsNull = FalseElsebIsNull = TrueEnd IfDim rs As New ADODB.Recordsetrs.Open "select empid,empname,pic from emp where empid = '" &amp; Trim(txtEmpId.Text) &amp; "'", cn, adOpenStatic, adLockOptimisticrs.AddNewrs!EmpId = txtEmpId.Textrs!EmpName = txtEmpName.TextIf bIsNull &lt;&gt; True Thenrs!pic = sByteEnd Ifrs.UpdateMsgBox "save data ok!"txtEmpId.Text = ""txtEmpName.Text = ""Set picView.Picture = NothingcmdAdd.Enabled = TrueEnd SubSub viewJpg()Dim TmpFile As StringDim jByte() As ByteSql = "select * from emp"Set rsViewJpg = New ADODB.RecordsetrsViewJpg.Open Sql, cn, adOpenStatic, adLockOptimisticrsViewJpg.MoveFirstIf Not rsViewJpg.BOF ThenIf Not rsViewJpg.EOF ThentxtEmpId.Text = rsViewJpg!EmpIdtxtEmpName.Text = rsViewJpg!EmpNameSet pic.Picture = NothingIf Not fs.FolderExists(App.Path + "/temp") Thenfs.CreateFolder (App.Path + "/temp")End IfTmpFile = App.Path + "/Temp/" + rsViewJpg.Fields(0) + ".jpg"If Not IsNull(rsViewJpg!pic) ThenjByte = rsViewJpg!picOpen TmpFile For Binary Access Write As #1Put #1, , jByteClose #1pic.Picture = LoadPicture(TmpFile)End IfEnd IfEnd IfEnd Sub。

基于ASP .NET实现图片存储数据库及页面读取研究与应用

基于ASP .NET实现图片存储数据库及页面读取研究与应用

基于实现图片存储数据库及页面读取研究与应用摘要:对于中存储签名图片,做了一个详细解决方案。

完善了客服端碰到的在数据库存储一个签名图片所遇到的问题。

关键词:;数据库;存储图片;SQL Serve0引言随着计算机网络与信息技术的迅速发展,Web已经成为各类信息系统开发的主流平台,许多信息网站在发布信息时均采用基于数据库的动态信息发布系统。

基于技术进行图片的上传与下载,需要使用专门的ASP文件上传组件或ISAPI扩展程序,这限制了程序设计的灵活性。

同时由于图片属于复杂类型数据,在SQL Server 数据库中与声音、大型电子表格等共用一个image字段类型,而且图片本身也有不同的数据格式,如.Gif或.Jpg,无法用操作一般字段的方法进行存取。

针对这一实际问题,本文介绍了基于ASP.NET 实现Web图片存取的新方法,通过利用ASP.NET中的上传文件对HttpPostedFile、ADO.NET Stream对象及ADO、NET提供的经过优化的SQL Server对象集,使Web信息中的图片上传到服务器并存入后台数据库,以及从数据库读取图片并在网页上显示更为简捷高效。

采用开发环境为+SQL2000数据库。

1图片的处理方式对于图片的处理有两种方式:①图片数据以文件形式直接存储在硬盘,在数据库中保存该图片的记录附加信息(路径、文件名、注释);②图片直接存储在数据库中。

这两种方式各有利弊。

图片文件存入数据库中便于管理与维护,而存入硬盘可能会因为不小心删除图片文件,而使得数据不一致,但图片放在数据库中不便于修改编辑, 同时会引起数据库读取数据时的I/O 消耗,而放在硬盘上则不会引起这个问题。

所以对于小文件,建议放在数据库中便于管理,而对于大文件,不可放在数据库中,否则数据库表会大量产生数据文件的碎片。

图系统结构模型2图片存储方法该系统使用 和SQL Server 数据库实现图片的存储。

将图片存放到硬盘指定的目录下,将图片的相对存储路径和其它附属信息存储到数据库中。

C#中RichEdit控件,保存文本和图片到mysql数据库

C#中RichEdit控件,保存文本和图片到mysql数据库

C#中RichEdit控件,保存⽂本和图⽚到mysql数据库分别通过内存流和RTF⽂件保存,个⼈感觉是较为完善的两种⽅法,希望⼤家可以⽤得到,有什么技术分享,欢迎下⾯留⾔⽅法1://建⽴内存流MemoryStream ms = new MemoryStream();//ms.Position = 0;//把当前的richtextbox内容包括图⽚和⽂本保存到流中richTextBox1.SaveFile(ms, RichTextBoxStreamType.RichText);byte[] buffer = ms.GetBuffer();// MySqlConnectStringMySqlConnection conn = new MySqlConnection(Properties.Settings.Default.MySqlConnectString);string insertStr = "insert into httang_test.hxwang_richedit(image) values(@blobData);";//需要主键设置⾃增MySqlParameter par = new MySqlParameter("@blobData", MySqlDbType.Blob);par.Value = buffer;MySqlCommand cmd = new MySqlCommand(insertStr, conn);cmd.Parameters.Add(par);try{conn.Open();cmd.ExecuteNonQuery();ms.Close();ms.Dispose();}catch (Exception ep){MessageBox.Show(ep.Message);}richTextBox1.Clear();MessageBox.Show("成功插⼊数据库!");}⽅法2:if ((Path.GetExtension("D:\\text")).ToLower() == ".rtf")richTextBox1.SaveFile("D:\\text", RichTextBoxStreamType.RichNoOleObjs);elserichTextBox1.SaveFile("D:\\text");FileStream fs = new FileStream("D:\\text", FileMode.Open);BinaryReader br = new BinaryReader(fs);byte[] byData = br.ReadBytes((int)fs.Length);//byte[] buffer = ms.GetBuffer();//// MySqlConnectStringMySqlConnection conn = new MySqlConnection(Properties.Settings.Default.MySqlConnectString);string insertStr = "insert into httang_test.hxwang_richedit(image) values(@blobData);";//需要主键设置⾃增MySqlParameter par = new MySqlParameter("@blobData", MySqlDbType.Blob);par.Value = byData;MySqlCommand cmd = new MySqlCommand(insertStr, conn);cmd.Parameters.Add(par);try{conn.Open();cmd.ExecuteNonQuery();fs.Close();fs.Dispose();}catch (Exception ep){MessageBox.Show(ep.Message);}richTextBox1.Clear();MessageBox.Show("成功插⼊数据库!");} }。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

this.sqlConnection1.Close();
}
catch(System.Exception ee)
{
MessageBox.Show(ee.Message );
}
buffByte = null;
this.FillListBox();
}
读取:
从数据库读图片到picturebox
ቤተ መጻሕፍቲ ባይዱ
this.sqlCommand1.Parameters[1].Value =pathName.Substring(stIndexOf("\\")+1);
try
{
this.sqlConnection1.Open();
this.sqlCommand1.ExecuteNonQuery();
//将图像保存到SQL server2000的Image字段中
private void button2_Click_1(object sender, System.EventArgs e)
{
string pathName;
if (this.openFileDialog1.ShowDialog()==System.Windows.Forms.DialogResult.OK)
System.IO.FileStream fs = new System.IO.FileStream(pathName,System.IO.FileMode.Open,System.IO.FileAccess.Read);
byte[] buffByte = new byte[fs.Length];
SqlConnection conn=new SqlConnection(@"data source=chenyuming2004VSdotNET;uid=sa;pwd=cym;database=lhf");
conn.Open();
SqlCommand cmd=new SqlCommand("select 照片 from fuser where password='1b'",conn);
SqlDataReader reader=cmd.ExecuteReader();
reader.Read();
MemoryStream buf=new MemoryStream((byte[])reader[0]);
Image image=Image.FromStream(buf,true);
{
pathName = this.openFileDialog1.FileName;
System.Drawing.Image img = System.Drawing.Image.FromFile(pathName);
this.pictureBox1.Image = img;
//将图像读入到字节数组
mandType = mandType.Text ;
mandText = comm;
this.sqlCommand1.Connection = this.sqlConnection1 ;
pictureBox1.Image=image;

fs.Read(buffByte,0,(int)fs.Length);
fs.Close();
fs = null;
//建立Command命令
string comm = @"Insert into table1(img,name) values(@img,@name)";
this.sqlCommand1 = new System.Data.SqlClient.SqlCommand ();
//创建Parameter
this.sqlCommand1.Parameters.Add("@img",System.Data.SqlDbType.Image);
this.sqlCommand1.Parameters[0].Value = buffByte;
this.sqlCommand1.Parameters.Add("@name",System.Data.SqlDbType.VarChar);
相关文档
最新文档