C_从SQL_数据库中读取和存入图片

合集下载

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# winform下sql图片二进制存储

c# winform下sql图片二进制存储

c# winform下sql图片二进制存储/读取/显示/写入XML/读取XML显示winform下://存储private void MemoryImage(){string sql = "";//string conn = "Provider=SQLNCLI;Data Source=192.168.0.9,1433;Database=WebDown;UID=sa;PWD=111122;";Stream ms;byte[] picbyte;OpenFileDialog fdSelectPic = new OpenFileDialog();if (ofdSelectPic.ShowDialog() == DialogResult.OK){if ((ms = ofdSelectPic.OpenFile()) != null){picbyte = new byte[ms.Length];ms.Position = 0;ms.Read(picbyte, 0, Convert.ToInt32(ms.Length));//连接数据库SqlConnection conn = new SqlConnection();conn.ConnectionString = "Data Source=192.168.0.9,1433;Database=WebDown;UID=sa;PWD=111122;";sql = "Insert into LibraryCover(Cover) values(@UpdateImage)";SqlCommand cmd = new SqlCommand(sql, conn);cmd.Parameters.Add("@UpdateImage", SqlDbType.VarBinary);cmd.Parameters["@UpdateImage"].Value = picbyte;conn.Open();cmd.ExecuteNonQuery();conn.Close();}}MessageBox.Show("完成!");}//读取private void ShowImage(){string sql = "";sql = "select Cover from LibraryCover where LibID=1";SqlConnection conn = new SqlConnection();conn.ConnectionString = "Data Source=192.168.0.9,1433;Database=WebDown;UID=sa;PWD=111122;";SqlCommand cmd = new SqlCommand(sql,conn);conn.Open();SqlDataReader reader = cmd.ExecuteReader();reader.Read();MemoryStream ms = new MemoryStream((byte[])reader["Cover"]);Image image = Image.FromStream(ms, true);reader.Close();conn.Close();pictureBox1.Image = image;}//批量存储private void button12_Click(object sender, EventArgs e){FolderBrowserDialog FBD = new FolderBrowserDialog();DBImages(FBD.SelectedPath);}/// <summary>/// 图片二进制存SQL库/// </summary>/// <param name="path">图片所在文件夹</param>private void DBImages(string path){Stream ms;string sql = "";byte[] picbyte;string FolderName = "";string[] Folders;string connStr = "Data Source=192.168.0.9,1433;Database=WebDown;UID=sa;PWD=111122;";SqlConnection conn = new SqlConnection(connStr);Folders = Directory.GetFiles(path);foreach (string folder in Folders){if ((ms = File.OpenRead(folder))!= null){picbyte = new byte[ms.Length];ms.Position = 0;ms.Read(picbyte, 0, Convert.ToInt32(ms.Length));sql = "insert into LibraryCover(ImageName,Cover) values(@ImageName,@Cover)";SqlCommand cmd = new SqlCommand(sql, conn);mandType = CommandType.Text;FolderName = Path.GetFileNameWithoutExtension(folder);cmd.Parameters.Add("@ImageName", SqlDbType.VarChar,255).Value = FolderName;cmd.Parameters.Add("@Cover", SqlDbType.VarBinary).Value = picbyte;conn.Open();cmd.ExecuteNonQuery();conn.Close();ms.Close();}}MessageBox.Show("存储完成!");}//批量读取private void button13_Click(object sender, EventArgs e){FolderBrowserDialog FBD = new FolderBrowserDialog();FBD.ShowDialog();getImageShow(FBD.SelectedPath);}/// <summary>/// sql库二进制图片显示在存储器上/// </summary>/// <param name="path">要存储图片的位置</param>private void getImageShow(string path){string sql = "";string conn = "Data Source=192.168.0.9,1433;Database=WebDown;UID=sa;PWD=111122;";sql = "select ImageName,Cover from LibraryCover order by LibID";SqlDataReader sdr = GetList(conn,sql);while (sdr.Read()){byte[] bytes = (byte[])sdr["Cover"];FileStream fs = new FileStream(path+@"\" + sdr["ImageName"] + ".jpg", FileMode.Create, FileAccess.Write);fs.Write(bytes, 0, bytes.Length);fs.Flush();fs.Close();}MessageBox.Show("完成!");}public SqlDataReader GetList(string conn, string Sql){SqlConnection myConnection = new SqlConnection(conn);SqlCommand myCommand = new SqlCommand(Sql, myConnection);myConnection.Open();SqlDataReader result = myCommand.ExecuteReader(CommandBehavior.CloseConnection);return result;}private void getImage(){int num = 0;string path = @"D:\bookpic";Stream ms;string sql = "";byte[] picbyte;FileInfo[] Folders;string[] files;string FilePath = "";string connStr = "Data Source=192.168.0.200,1433;Database=MISTemp;UID=sa;PWD=111122;";SqlConnection conn = new SqlConnection(connStr);DirectoryInfo DI = new DirectoryInfo(path);Folders = DI.GetFiles("*.*",SearchOption.AllDirectories);foreach (FileInfo file in Folders){num++;txt_num.Text = num.ToString();FilePath = file.FullName.Replace(@"D:\", "").Replace(@"\","/"); if ((ms = File.OpenRead(file.FullName)) != null){picbyte = new byte[ms.Length];ms.Position = 0;ms.Read(picbyte, 0, Convert.ToInt32(ms.Length));sql = "update shop_books set Cover=@Cover where bookpic='" + modsql(FilePath) + "'";SqlCommand cmd = new SqlCommand(sql, conn);mandType = CommandType.Text;mandTimeout = 10000;cmd.Parameters.Add("@Cover", SqlDbType.VarBinary).Value = picbyte;conn.Open();cmd.ExecuteNonQuery();conn.Close();ms.Close();}}MessageBox.Show("存储完成!");}public string modsql(string sql){return sql.Replace("'", "''");}//Image写入XMLusing System.IO;using System.Runtime.Serialization.Formatters.Soap;string MyFile = @"D:\数据处理\image.xml";string imageFile = @"G:\zengwei.jpg";Stream MyStream;SoapFormatter MyFormatter =new SoapFormatter();private void button1_Click(object sender, EventArgs e){try{MyStream = new FileStream(MyFile, FileMode.Create, FileAccess.Write, FileShare.None);MyFormatter.Serialize(MyStream, pictureBox1.Image);MyStream.Close();MessageBox.Show("完成!");}catch (Exception ex){}}//读取XML显示IMAGEprivate void button2_Click(object sender, EventArgs e){try{MyStream = new FileStream(MyFile, FileMode.Open, FileAccess.Read, FileShare.None);pictureBox1.Image = (Bitmap)MyFormatter.Deserialize(MyStream);MyStream.Close();}catch (Exception ex){ }}private void button3_Click(object sender, EventArgs e){pictureBox1.Image = Image.FromFile(imageFile);}水晶报表使用经验谈3--在报表中显示多个表的字段(通过表关联)举个简单的例子:员工表(员工编号员工姓名部门编号)部门表(部门编号部门名称)要求是: select 员工表.员工姓名,部门表.部门姓名 from 员工表,部门表 where 员工表.部门编号=部门表.部门编号操作步骤(列举几个比较重要也是自己当时操作比较容易困惑的地方)1.建xsd文件直接拖入员工表和部门表不要做任何字段关联2.建rpt文件选择员工表和部门表后建立链接员工表的部门编号---〉部门表的部门编号3.建.aspx文件拖入报表控件4.在.aspx.cs中建立一个DataSet,里面是两张表,名称分别是员工表、部门表(和拖入XSD的名称保持一致)sql语句分别为:select * from 员工表select * from 部门表基本上就是这样大家可以试着做一下有什么问题可以一起讨论一下水晶报表使用经验谈4--使用视图解决在报表中的多表关联问题最近一直忙于关于生产计划管理系统的开发,所以很少在这里留言,请各位见谅!还好项目已经进入测试最后阶段,由于项目中对报表的处理使用了水晶报表,加上有很多朋友都留言讲述自己在使用水晶报表开发过程中遇到的问题,所以这次我写了些使用水晶报表的技巧,供大家参考(纯属个人经验,不对处请指正)。

C#从数据库读取图片并保存的两种方法

C#从数据库读取图片并保存的两种方法

C#从数据库读取图⽚并保存的两种⽅法⽅式⼀:数据库⽤的是SQL 2008,数据表中存放的是图⽚的⼆进制数据,现在把图⽚以⼀种图⽚格式(如.jpg)导出,然后存放于指定的⽂件夹中,实现⽅式如下:byte[] bytImg = (byte[])myDAL.DbHelperSQL.Query("SELECT F_Photo FROM myTable WHERE ID=1").Tables[0].Rows[0][0];if (bytImg != null){MemoryStream ms = new MemoryStream(bytImg);Image img = Image.FromStream(ms);img.Save("D:\\me.jpg");}⽅式⼆:是windowform程序,数据库已经建好,图像以⼆进制形式存放在数据库的image表中,我想把符合查询条件的图像(⼤量)从数据库中读出,显⽰在form窗体上的⼀个控件(listview或imagelist还是picturebox?这个不知道那个合适),并保存到选择(或新建)的⼀个⽂件夹中SqlDataAdapter da = new SqlDataAdapter("select * from newpicture", conn);//数据库连接,修改⼀下数据库的操作。

DataSet ds = new DataSet();da.Fill(ds, "pic");//将符合条件的选项保存在数据集的pic表⾥string picdotname;string picfilename;int piclength;int i;//添加新列DataColumn newcolumn = ds.Tables["pic"].Columns.Add("pic_url", typeof(string));//给pic表添加新的⼀列pic_url,保存你的新写出的图⽚路径for (i = 0; i < Convert.ToInt16(ds.Tables["pic"].Rows.Count); i++){picdotname = ds.Tables["pic"].Rows[i]["pic_dot"].ToString();//图⽚的拓展名,你数据库要有这⼀列,如jpgpiclength = Convert.ToInt32(ds.Tables["pic"].Rows[i]["pic_length"]);//数据流的长度picfilename = Server.MapPath("新建的⽂件夹名/") + "添加图⽚名"+ "." + picdotname;FileStream fs = new FileStream(picfilename, FileMode.Create, FileAccess.Write);byte[] piccontent = new byte[piclength];piccontent = (byte[])ds.Tables["pic"].Rows[i]["pic_content"];fs.Write(piccontent, 0, piclength);fs.Close();//读出数据流写成图⽚//最后把表绑定到控件上。

C# MySQL 图片的存储与读取

C# MySQL 图片的存储与读取

C# MySQL 图片的存储与读取一、存储图片private void button3_Click(object sender, EventArgs e){if (pictureBox2.Image != null){//将图片对象image转换成缓冲流imageStreamMemoryStream imageStream = new MemoryStream();pictureBox2.Image.Save(imageStream, System.Drawing.Imaging.ImageFormat.Jpeg);//获得图片的字节数组imageBytebyte[] imageByte = imageStream.GetBuffer();//建立数据库连接MySqlConnection conn = new MySqlConnection("Server=localhost;Uid=root;Password=123;Database=test"); conn.Open();//设置命令参数string insertStr="insert into img(image) values(?imageByte)";MySqlCommand comm = new MySqlCommand();comm.Connection = conn;mandText = insertStr;mandType = CommandType.Text;//设置数据库字段类型MediumBlob的值为图片字节数组imageBytecomm.Parameters.Add(new MySqlParameter("?imageByte", MySqlDbType.MediumBlob)).Value = imageByte;//执行命令try{comm.ExecuteNonQuery();}catch (Exception ex){MessageBox.Show(ex.ToString());}comm.Dispose();conn.Close();conn.Dispose();}}二、读取图片private void button4_Click(object sender, EventArgs e){//建立数据库连接MySqlConnection conn = new MySqlConnection("Server=localhost;Uid=root;Password=123;Database=test"); conn.Open();//设置命令参数MySqlCommand comm = new MySqlCommand("select image from img order by id desc", conn);//执行命令并获得数据读取器MySqlDataReader dr = comm.ExecuteReader();if (dr.Read()){//读出图片字节数组至byte[]byte[] imageByte = new byte[dr.GetBytes(0, 0, null, 0, int.MaxValue)];dr.GetBytes(0, 0, imageByte, 0, imageByte.Length);//将图片字节数组加载入缓冲流MemoryStream imageStream = new MemoryStream(imageByte);//从缓冲流生成图片Image image = Image.FromStream(imageStream, true);pictureBox2.Image = image;}dr.Dispose();comm.Dispose();conn.Close();conn.Dispose();}。

C# 从数据库读写图片流方法

C# 从数据库读写图片流方法
byte[] Content=new byte[obj.Length];
//打开文件并用他初始化一个文件流对象
FileStream ImageFileStream=obj.OpenRead();
//将文件内容写入字节数组
ImageFileStream.Read(Content,0,Content.Length);
Command.ExecuteNonQuery();
//关闭数据库连接
this.MySqlCon.Close();
MessageBox.Show("图像文件 " + obj.FullName + " 成功上传到数据库!");
//打开数据库连接
this.MySqlCon.Open();
//执行Sql语句
SqlDataReader MyReader=Command.ExecuteReader(CommandBehavior.CloseConnection);
MyReader.Read();
imageTypeParameter.Value=obj.Extension;
Command.Parameters.Add(imageTypeParameter);
//打开数据库连接
this.MySqlCon.Open();
//执行 Sql 语句
Command.Parameters.Add(imageDescriptionParameter);
//图像的数据字节数组
SqlParameter imageFileParameter=new SqlParameter("@ImageFile",SqlDbType.Image);

SQL存取image图片

SQL存取image图片

C#在SQl中存取图片image[原]Posted on 2008-07-30 11:54 桦林阅读(659) 评论(0)编辑收藏网摘所属分类: Asp. net(C#)(1)控制台应用程序下演示插入图片public void InsertIMG(){//将需要存储的图片读取为数据流FileStream fs = new FileStream(@"E:\c.jpg", FileMode.Open,FileAcc ess.Read);Byte[] btye2 = new byte[fs.Length];fs.Read(btye2 , 0, Convert.ToInt32(fs.Length));fs.Close();using (SqlConnection conn = new SqlConnection(sqlconnstr)){conn.Open();SqlCommand cmd = new SqlCommand();cmd.Connection = conn;mandText = "insert into T_Img(imgfile) values(@imgfil e)";SqlParameter par = new SqlParameter("@imgfile", SqlDbType.I mage);par.Value = bt;cmd.Parameters.Add(par);int t=(int)(cmd.ExecuteNonQuery());if (t > 0){Console.WriteLine("插入成功");}conn.Close();}}(2)控制台应用程序下读出并生成图片到物理位置public void Read(){byte[] MyData = new byte[0];using (SqlConnection conn = new SqlConnection(sqlconnstr)){conn.Open();SqlCommand cmd = new SqlCommand();cmd.Connection = conn;mandText = "select * from T_img";SqlDataReader sdr = cmd.ExecuteReader();sdr.Read();MyData = (byte[])sdr["ImgFile"];//读取第一个图片的位流int ArraySize= MyData.GetUpperBound(0);//获得数据库中存储的位流数组的维度上限,用作读取流的上限FileStream fs = new FileStream(@"c:\00.jpg", FileMode.OpenOrC reate, FileAccess.Write);fs.Write(MyData, 0, ArraySize);fs.Close(); //-- 写入到c:\00.jpg。

C#保存图片到数据库,读取图片显示

C#保存图片到数据库,读取图片显示

this.sqlConnection1.Close();
}
catch(System.Exception ee)
{
MessageBox.Show(ee.Message );
}
buffByte = null;
this.FillListBox();
}
读取:
从数据库读图片到picturebox
System.IO.FileStream fs = new System.IO.FileStream(pathName,System.IO.FileMode.Open,System.IO.FileAccess.Read);
byte[] buffByte = new byte[fs.Length];
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 ();
将图像保存到SQL server2000的Image字段中
private void button2_Click_1(object sender, System.EventArgs e)
{
string pathName;
if (this.openFileDialog1.ShowDialog()==System.Windows.Forms.DialogResult.OK)

SQL数据库中图形图像的访问

SQL数据库中图形图像的访问

SQL数据库中图形图像的访问本文主要描述图形图像数据的处理方式;并介绍集成方式下,如何访问SQL 数据库中的图形图像数据的技术。

标签:图形图像数据;集成式;读取;保存随着计算机技术的不断发展,计算机可处理的信息源种类也越来越丰富,其中就包括图形图像。

在日常处理事务中,人们也往往将图形图像列为一个重要的相关数据加以保存和处理。

图形图像文件常见为.bmp、.jpg或.gif文件。

数据库技术中,通常对图形图像数据的处理有两种方式。

(1)集成式:将图形图像数据集成到数据库中,和普通的文本和数值数据存储在一起,使得给定数据库实体的所有相关信息都会集中。

集成式有利于通过查询图形图像数据的相关文本信息来查找和检索图形图像数据;(2)分离式:即把图形图像文件存储在数据库外部,在数据库中包含对象的文件路径或URL。

分离式在编程方面比较容易,数据库也较小,但必须手动创建、维护数据库和外部系统文件间的某种链接,往往稍不注意就会导致不同步。

大多数现代数据库如SQL Server、Oracle和UDB提供的二进制存储区可以容纳所有类型的对象。

在本文中就是将图形图像数据集成到SQL数据库中,和它们相关的文本和数值数据保存在一起。

那么如何访问集成到数据库中的图形图像数据,并进行存取操作呢?下面就利用SQL数据库Northwind中自己新建的数据表tuxing(学号(char,10),地址(char,60),图形(image,16))进行图形字段值的存取操作。

1. 從SQL数据库中读取图形图像数据显示到窗体的图像控件中使用SqlDataReader检索图形图像数据类似于检索字符和数值数据,但有一些重要的区别,其中最主要的区别是要在Command对象的ExecuteReader方法上使用CommandBehavior.SequentialAccess来访问标记。

在指定SequentialAccess 时,会改变DataReader两个方面的默认执行方式。

C#将文件保存到数据库中或者从数据库中读取文件

C#将文件保存到数据库中或者从数据库中读取文件

首先,介绍一下保存文件到数据库中。

将文件保存到数据库中,实际上是将文件转换成二进制流后,将二进制流保存到数据库相应的字段中。

在SQL Server中该字段的数据类型是Image,在access中该字段的数据类型是OLE对象。

//保存文件到SQL Server数据库中FileInfo fi=new FileInfo(fileName);FileStream fs=fi.OpenRead();byte[] bytes=new byte[fs.Length];fs.Read(bytes,0,Convert.ToInt32(fs.Length));SqlCommand cm=new SqlCommand();cm.Connection=cn;mandType=CommandType.Text;if(cn.State==0) cn.Open();mandText="insert into "+tableName+"("+fieldName+") values(@file)"; SqlParameter spFile=new SqlParameter("@file",SqlDbType.Image);spFile.Value=bytes;cm.Parameters.Add(spFile);cm.ExecuteNonQuery()//保存文件到Access数据库中FileInfo fi=new FileInfo(fileName);FileStream fs=fi.OpenRead();byte[] bytes=new byte[fs.Length];fs.Read(bytes,0,Convert.ToInt32(fs.Length));OleDbCommand cm=new OleDbCommand();cm.Connection=cn;mandType=CommandType.Text;if(cn.State==0) cn.Open();mandText="insert into "+tableName+"("+fieldName+") values(@file)"; OleDbParameter spFile=new OleDbParameter("@file",OleDbType.Binary);spFile.Value=bytes;cm.Parameters.Add(spFile);cm.ExecuteNonQuery()//保存客户端文件到数据库sql="update t_mail set attachfilename=@attachfilename,attachfile=@attachfile where mailid="+mailid;myCommand = new SqlCommand(sql, new SqlConnection(ConnStr));string path = fl_name.PostedFile.FileName;stringfilename=path.Substring(stIndexOf("\\")+1,stIndexOf("\\")-1);myCommand.Parameters.Add("@attachfilename",SqlDbType.VarChar);myCommand.Parameters["@attachfilename"].Value=filename;myCommand.Parameters.Add("@attachfile",SqlDbType.Image);Stream fileStream = fl_name.PostedFile.InputStream;int intFileSize = fl_name.PostedFile.ContentLength;byte[] fileContent = new byte[intFileSize];int intStatus = fileStream.Read(fileContent,0,intFileSize); //文件读取到fileContent数组中myCommand.Parameters["@attachfile"].Value=((byte[])fileContent);fileStream.Close();myCommand.Connection.Open();myCommand.ExecuteNonQuery();myCommand.Connection.Close();代码中的fileName是文件的完整名称,tableName是要操作的表名称,fieldName是要保存文件的字段名称。

使用sqlite保存图片和导出图片

使用sqlite保存图片和导出图片

本人在使用sqlite数据库时,使用c语言作为调用sqlite数据库的嵌入式语言,在调用的时候实现了对图片和视频的保存和调用。

结果获得了成功。

这是一个对blob类型的使用例子。

下面时本人的试验代码,已在本机运行通过。

#include<iostream>#include<string>#include"sqlite3.h"using namespace std;intmain(){sqlite3 *db;sqlite3_stmt *stat;char *zErrMsg = 0;char buffer2[1024]="0";int result;result = sqlite3_open("sqlite.db", &db);if(result){cout<<"Open the database sqlite.db failed"<<endl;}elsecout<<"Open the database sqlite.dbsucessfully"<<endl;sqlite3_exec(db, "CREATE TABLE linhui (flienamevarchar(128) UNIQUE, fzip blob);", 0, 0, &zErrMsg);//sqlite3_prepare()第一个参数跟前面一样,是个sqlite3 * 类型变量,第二个参数是一个sql 语句。

这个sql//语句特别之处在于values 里面有个? 号。

在sqlite3_prepare函数里,?号表示一个未定的值,它的值等下才插入。

sqlite3_prepare(db, "insert into linhui values ('./images/5.bmp',?);", -1, &stat, 0);FILE *fp;long filesize = 0;char * ffile;fp = fopen("./images/5.bmp", "rb");if(fp != NULL){fseek(fp, 0, SEEK_END); //将fp指针退回到距离文件结尾0个字节处。

最新C从SQL数据库中读取和存入图片汇总

最新C从SQL数据库中读取和存入图片汇总

C从S Q L数据库中读取和存入图片C#从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 = newSqlConnection("server=(local);uid=sa;pwd=;database=db_05");con.Open();SqlCommand com = newSqlCommand("insert into tb_08 values(@ImageList)",con);com.Parameters.Add("ImageList", SqlDbType.Image);com.Parameters["ImageList"].Value = imagebytes;com.ExecuteNonQuery();con.Close();}}本实例主要介绍如何从数据库中把图片读出来。

c从sql中读取和存入图片

c从sql中读取和存入图片

C#从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 = newSqlConnection("server=(local);uid=sa;pwd=;database=db_05");con.Open();SqlCommand com = new SqlCommand("insert into tb_08values(@ImageList)",con);com.Parameters.Add("ImageList", SqlDbType.Image);com.Parameters["ImageList"].Value = imagebytes;com.ExecuteNonQuery();con.Close();}}本实例主要介绍如何从数据库中把图片读出来。

如何把图片以二进制方式存入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.Pageprotected 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。

C#+SQL Server2000存取图像

C#+SQL Server2000存取图像

C#+SQLServer2000存取图像[摘要]C#在广泛应用到信息系统,智能客户端软件的开发,所以经常会遇到向数据库存取图像的技术问题。

本文主要阐述如何使用c#向sqlserver2000里存取图像,如何纠正经过排序后显示图像出现的错误。

[关键词]C#SQL Server2000文件流内存流存取图像在设计数据库系统的时候,很经常会遇到图像数据的处理问题。

一般有两种方法:一种在数据库表中建立一个字段,此字段并不保存图像,只保存指向此图像的路径。

另外一种是直接把图像保存在数据库里面。

第一种方法由于图像并不是放在数据库里面,所有数据库的容量比较小,进行数据库查询操作的时候也较快。

但是,由于图像不是在数据库里面,管理起来不方便,所以当图像容量不是很大的时候,多采用第二种方法来管理图像数据。

但是图像不像一般的数据类型,不能直接写入数据库。

使用文件流、内存流来存取图像是最常用的一种方法。

我在编写数据库软件中就采用这样方法来完成图像的存取的。

下面我用一个例子程序来说明利用文件流、内存流存取图像的过程经遇到的一些问题和解决的技巧。

这个程序我是用c#.net编写的。

功能是1、让用户选取产品的图像并录入产品的信息2、显示产品的信息及其对应的图像。

程序的后台数据库是用SQL Server2000。

图像数据保存在tbl_products(产品表)的pro_image字段里面。

字段的类型为“image”。

下面的代码是实现让用户选取产品的图像并把图像保存在数据库中。

如图:当用户按下打开按钮,程序把图像读入image控件中对应代码:private void button3_Click(object sender, System.EventArgs e){if(this.openFileDialog1.ShowDialog()==DialogResult.OK){this.pictureBox1.Image=Image.FromFile(this.openFileDialog1.FileName);this.filename=this.openFileDialog1.FileName;//读入用户选择的图像并显示}}当按下“确定”按钮后,程序把显示在image控件中的图像写入数据库。

C读取写入图片到数据库精华

C读取写入图片到数据库精华

加密存储图片数据:使用加密算法对图片数据进行加密,确保数据在存储过程中的安全性。
验证用户身份:在读取和写入图片数据之前,验证用户的身份和权限,防止未经授权的用户访问和修改数据。
数据备份和恢复:定期备份图片数据,以防止数据丢失或损坏。同时,提供数据恢复功能,以便在数据出现问题时能够及时恢复。
数据访问控制:对图片数据的访问进行控制,确保只有授权用户才能访问和修改数据。
连接数据库并创建表格
读取图片文件
ቤተ መጻሕፍቲ ባይዱ
将图片文件转换为二进制数据
将二进制数据存储到数据库表格中
注意事项
图片格式:确保图片格式与数据库支持的格式相匹配
图片大小:避免上传过大的图片,以减少数据库存储压力
图片质量:在压缩图片时,要确保图片质量不会损失过多
安全性:对上传的图片进行安全检查,防止恶意图片或病毒
C写入图片到数据库
新技术和新方法的探索和研究
深度学习在图像识别中的应用
区块链技术在数据存储和传输中的潜力
云计算为图像处理和数据库提供更高效解决方案
未来可能出现的其他新技术和新方法
对未来发展的展望和预测
图像识别技术的进步将进一步提高C读取和写入图片到数据库的效率
云计算和大数据技术的普及将为C读取和写入图片到数据库提供更强大的支持
将图片数据转换为二进制格式
打开图片文件
将图片数据读取到内存中
将二进制数据写入到数据库中
注意事项
C读取和写入图片到数据库的精华
掌握C语言的基本操作
熟悉数据库的基本操作
数据库的插入和删除
数据库的连接和断开
数据库的查询和更新
数据库的索引和优化
了解图片的基本格式和编码方式

C#实现SQLServer中存取图片、文件

C#实现SQLServer中存取图片、文件

C#实现SQLServer中存取图⽚、⽂件using System;using System.Windows.Forms;using System.Data.SqlClient;using System.Data;using System.IO;//将数据写进//参数://FilePath ⽂件路径//ConnectionString 连接字符串public void SaveDataIntoDatabase(string FilePath,string ConnectionString){if(File.Exists(FilePath)==false){MessageBox.Show("⽆法读取⽂件!","提⽰",MessageBoxButtons.OK,MessageBoxIcon.Error);return;}//创建⽂件对象以打开的形式读取⽂件System.IO.FileStream sFileStream=new System.IO.FileStream(FilePath,System.IO.FileMode.Open);//分配数组⼤⼩byte[] bFile=new byte[sFileStream.Length];//将⽂件内容读进数组sFileStream.Read(bFile,0,(int)sFileStream.Length);//关闭⽂件对象sFileStream.Close();//创建连接SqlConnection conn=new SqlConnection(ConnectionString);SqlCommand com=conn.CreateCommand();mandText="Update 表 Set [图⽚]=@F Where ID='0001'";mandType=CommandType.Text;SqlParameter sp=newSqlParameter("@F",SqlDbType.Image,bFile.Length,ParameterDirection.Input,false,0,0,null,DataRowVersion.Current,bFile); com.Parameters.Add(sp);com.ExecuteNonQuery();conn.Close();}//从数据库中读取数据//参数://FilePath ⽂件路径//ConnectionString 连接字符串public void LoadDataFromDatabase(string FilePath,string ConnectionString){//判断⽂件是否已存在.if(File.Exists(FilePath)!=true){//如存在则删除File.Delete(FilePath);}//创建连接SqlConnection conn=new SqlConnection(ConnectionString);SqlCommand com=conn.CreateCommand();mandText="Select [图⽚] From 表 Where ID='0001'";mandType=CommandType.Text;//⽤DataReader读取数据SqlDataReader sR=com.ExecuteReader();sR.Read();//判断是否有记录if(sR.HasRows==false){sR.Close();conn.Close();return;}//分配数组⼤⼩byte[] bFile=new byte[Convert.ToInt32(sR.GetBytes(0,0,null,0,Int32.MaxValue))];//将数据读进数组sR.GetBytes(0,0,bFile,0,bFile.Length);//关闭DataReadersR.Close();//创建⽂件对象以创建⽂件的形式打开⽂件System.IO.FileStream sFileStream=new System.IO.FileStream(FilePath,System.IO.FileMode.Create); //将数组的内容写进⽂件sFileStream.Write(bFile,0,bFile.Length);//关闭⽂件sFileStream.Close();}。

C#实现SQL数据库中数据的读取和存储

C#实现SQL数据库中数据的读取和存储

//链接字符串
a) b)
如上图所示显示 服务器资源管理器 在[服务器资源管理器] 中单击数据连接 确定
打开 将“服务器名称”复制到该栏
c)
选中新添加的数据连接实例 右键选择“属性” 复制“连接字符串”即可;
4 代码片段如下: C# 从 SQL 数据库中提取数据; //----实现对 SQLServer 中数据的读取并显示到 grid 中 string con,sql; con = "Data Source=lijr-pc;Initial Catalog=Exercise;Integrated Security=True";//链接字符串 sql = "select * from lianxi"; SqlConnection mycon = new SqlConnection(con); //链接参数为 【链接字符串】 mycon.Open(); SqlDataAdapter myda = new SqlDataAdapter(sql, con); //数据库适配器--用于执行 sql 语句 //链接字符串】 -----[用于填充 DataSet(数据集)] DataSet myds = new DataSet(); myda.Fill(myds, "lianxi");//用指定的表填充 DataSet gridControl1.DataSource = myds.Tables["lianxi"]; mycon.Close();//关闭连接 C# 对 SQL 数据库进行操作; //实现对 SQLServer 中指定表格内容的删除 参数为【执行语句、
string con, sql; con = "Data Source=lijr-pc;Initial Catalog=Exercise;Integrated Security=True"; sql = "delete from lianxi"; //"SQL"语句 SqlConnection mycon = new SqlConnection(con);//新建连接 mycon.Open(); //打开连接 SqlCommand com = new SqlCommand(); com.Connection = mycon; mandType = CommandType.Text; mandText = sql; SqlDataReader datar = com.ExecuteReader();//从数据库中读取流 datar.Close(); //关闭读取流之后才能开启新的数据流读取 mycon.Close();//关闭连接
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

于读取图象文件属性
FileLength = UpFile.ContentLength;
//记录文件长度
try {
if (FileLength == 0)
{
//文件长度为零时
txtMessage.Text = "<b>请你选择你要上传的文件</b>";
}
else
{
Byte[] FileByteArray = new Byte[FileLength]; //图象文件临时
CmdObj.Parameters.Add("@ImageDescription", SqlDbType.VarChar,200).value = txtDescription.Text;
//记录文件长度,读取时使用 CmdObj.Parameters.Add("@ImageSize", SqlDbType.BigInt,8).value = UpFile.ContentLength; Con.Open(); CmdObj.ExecuteNonQuery(); Con.Close(); txtMessage.Text = "<p><b>OK!你已经成功上传你的图片</b>";//提示 上传成功 } } catch (Exception ex) { txtMessage.Text = ex.Message.ToString(); } } } } //--------------------------------------------------------------------//好了,图片已经上传到数据库,现在还要干什么呢?当然是在数据库中读取及 显示在 Web 页中啦,
} dr.Close(); com.Clone(); con.Close(); MemoryStream ms = new MemoryStream(imagebytes); Bitmap bmpt = new Bitmap(ms); pictureBox1.Image = bmpt; } 本实例主要介绍如何只允许输入指定图片格式。用 OpenFileDialog 控件打开图 片文件,只要将 OpenFileDialog 控件的 Filter 属性指定为特定的图片格式即可。 例如,打开.bmp 文件的图片,主要代码如下:
//建立 SQL Server 链接
SqlConnection Con = new SqlConnection("Data
Source=Localhost;Initial Catalog=testdb;User ID=sa;Pwd=;");
String SqlCmd = "INSERT INTO ImageStore (ImageData, ImageContentType, ImageDescription, ImageSize) valueS (@Image, @ContentType, @ImageDescription, @ImageSize)";
com.Parameters.Add("ImageList", SqlDbType.Image); com.Parameters["ImageList"].Value = imagebytes;
com.ExecuteNonQuery(); con.Close();
} }
本实例主要介绍如何从数据库中把图片读出来。实现本实例主要是利用 SqlDataReader 从数据库中把 Image 字段值读出来,赋给一个 byte[]字节数组, 然后使用 MemoryStream 类与 Bitmap 把图片读取出来。主要代码如下:
cellspacing="0" border="0"> <TR>
<TD>上传图片(选择你要上传的图片)</TD> <TD> <INPUT TYPE="file" ID="UP_FILE" RUNAT="server" STYLE="Width:320"
ACCEPT="text/*" NAME="UP_FILE"> </TD> </TR> <TR>
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);
<TD> 文件说明(添加上传图片说明,如:作者、出处)
</TD> <TD> <asp:TextBox RUNAT="server" WIDTH="239" ID="txtDescription"
MAINTAINSTATE="false" /> </TD> </TR> <TR> <TD> <asp:Label RUNAT="server" ID="txtMessage" FORECOLOR="red"
private void button1_Click(object sender, EventArgs e) openFileDialog1.Filter = "*jpg|*.JPG|*.GIF|*.GIF|*.BMP|*.BMP";
if(openFileDialog1.ShowDialog()==DialogResult.OK) {
下上传图片到数据库,并且读出图片
首先在 SQL Server 中建立一个图片存储的数库表,ImageData Column 为图象二 进制数据储存字段
,ImageContentType Column 为图象文件类型记录字段,ImageDescription Column 为储蓄图
象文件说明字段,ImageSize Column 为储存图象文件长度字段,结构如下: CREATE TABLE [dbo].[ImageStore] (
private void button1_Click(object sender, EventArgs e) {
byte[] imagebytes = null; //打开数据库
SqlConnection con = new SqlConnection("server=(local);uid=sa;pwd=;database=db_05");
this.openFileDialog1.Filter = "bmp 文件(*.bmp)|*.bmp";
在用 pictureBox 控件输入图片时,要想统一图片大小,只需把控件的 SizeMode 属性值设为 StretchImage 即可,StretchImage 值表示图像的大小将调整为控件 的大小。这样,图片的大小就统一了。
储存 Byte 数组
Stream StreamObject = UpFile.I像
//读取图象文件数据,FileByteArray 为数据储存体,0 为数据指针位置、
FileLnegth 为数据长度
StreamObject.Read(FileByteArray,0,FileLength);
{
public class UploadImage : Page
{
protected HtmlInputFile UP_FILE;
//HtmlControl、
WebControls 控件对象
protected TextBox txtDescription;
protected Label txtMessage;
MAINTAINSTATE="false" /> </TD> <TD> <asp:Button RUNAT="server" WIDTH="239" onCLICK="Button_Submit" TEXT="Upload
Image" /> </TD> </TR> </TABLE> </FORM> </BODY> </HTML> //------------------------------------------------------------------//UpLoadImage.cs 程序内容如下: using System; using System.Web; using System.IO; using System.Data; using System.Data.SqlClient; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; namespace UploadImage
相关文档
最新文档