问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C#WinForm中,用于将图片以二进制存入sql数据库中,并将图片从数据库中取出,显示在PictureBox控件中。

发布网友 发布时间:2022-04-08 02:47

我来回答

4个回答

懂视网 时间:2022-04-08 07:08

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.Data.SqlClient; namespace WindowsFormsApplication10 { public partial class Form2 : Form { public Form2() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { openFileDialog1.Filter = "@.Jpg|*.jpg|@.Gif|*.gif|@.Png|*.png|All files|*.*"; DialogResult dr = openFileDialog1.ShowDialog(); if (dr == DialogResult.OK) { //将图片读入到文件流 FileStream fs = new FileStream(openFileDialog1.FileName,FileMode.Open,FileAccess.Read);//路径 Image img = System.Drawing.Bitmap.FromStream(fs);//绘制,流转成图片 pictureBox1.Image = img;//指定,显示图片 fs.Close(); } } private void button2_Click(object sender, EventArgs e)//存入数据库 { openFileDialog1.Filter = "@.Jpg|*.jpg|@.Gif|*.gif|@.Png|*.png|All files|*.*"; DialogResult dr = openFileDialog1.ShowDialog(); if (dr == DialogResult.OK) { //文件流 FileStream fs = new FileStream(openFileDialog1.FileName,FileMode.Open,FileAccess.Read); BinaryReader br = new BinaryReader(fs);//二进制读取器 byte[] buffer = br.ReadBytes(int.Parse(fs.Length.ToString())); //连接数据库 SqlConnection conn = new SqlConnection("server=.;database=snewData;user=sa;pwd="); SqlCommand cmd = conn.CreateCommand(); cmd.CommandText = "insert into imgtable values(@buffer)"; cmd.Parameters.Add("@buffer",buffer); conn.Open(); cmd.ExecuteNonQuery(); cmd.Dispose(); conn.Close(); } } private void button3_Click(object sender, EventArgs e)//数据库读取 { //读取数据库 byte[] buffer = null; SqlConnection conn = new SqlConnection("server=.;database=snewData;user=sa;pwd="); SqlCommand cmd = conn.CreateCommand(); cmd.CommandText = "select *from imgtable where code=4"; conn.Open(); SqlDataReader dr = cmd.ExecuteReader(); if (dr.Read()) { buffer = (byte[])dr["imgs"]; } cmd.Dispose(); conn.Close(); //将二进制数据buffer显示为图片 MemoryStream ms = new MemoryStream(buffer);//构建对象 ms.Write(buffer,0,buffer.Length);//写到内存流中 Image img = System.Drawing.Image.FromStream(ms); pictureBox1.Image = img; } } }

 

winform图片读取存储于数据库SQL

标签:

热心网友 时间:2022-04-08 04:16

插入: //单击图片选择添加的图片 private void pic_Click(object sender, EventArgs e)
{ dlg.Filter = "JPG|*.jpg|BMP|*.bmp|PNG|*.png";
if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
pic.Image = Image.FromFile(dlg.FileName);
txtFilePath = dlg.FileName;
}
} public byte[] picData; public string txtFilePath = ""; 添加确定按钮代码: f (txtFilePath != "")
{
try
{
FileStream fs = new FileStream(txtFilePath, FileMode.Open, FileAccess.Read);
int len = Convert.ToInt32(fs.Length);
b = new byte[len];
fs.Read(b, 0, len);
fs.Close();
}
catch
{
b = null;
}
} SqlConnection conn = new SqlConnection(strConn);
conn.Open(); SqllCommand cmdInsert = new SqlCommand();
cmdInsert.Connection = conn;
cmdInsert.CommandText =插入语句; cmdInsert.Parameters.Add("@照片", SqlDbType.Image); if (txtFilePath == "")
{
cmdInsert.Parameters["@照片"].Value = DBNull.Value;
}
else
{
cmdInsert.Parameters["@照片"].Value = b;
}
cmdInsert.ExecuteNonQuery();
conn.Close();获取: public byte[] picData; SqlConnection conn = new SqlConnection(strConn);
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "select * from 联系人 where 编号=" + ID.ToString();
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataSet ds = new DataSet(); sda.Fill(ds); if (ds.Tables[0].Rows.Count == 1)
{
if (ds.Tables[0].Rows[0]["照片"] == DBNull.Value)
{ //pic为picturebox控件
pic.Image = PhoneBoook.Properties.Resources.DeskShade;//为空的话给个默认图片
}
else
{
byte[] b = (byte[])(ds.Tables[0].Rows[0]["照片"]);
pic.Image = Image.FromStream(new MemoryStream(b));
picData = b;
}
}

热心网友 时间:2022-04-08 05:34

首先把图片转化成2进制流
Image _Image = Image.FromFile(@"C:\1.jpg");
System.IO.MemoryStream _ImageMem = new System.IO.MemoryStream();
_Image.Save(_ImageMem, ImageFormat.Bmp);
byte[] _ImageBytes = _ImageMem.GetBuffer();
然后同样的方法放入数据库
SqlCommand _SqlCommand = new SqlCommand("Insert into ImageTable(name,image)values(@name,@image)");
_SqlCommand.Parameters.Add(new SqlParameter("@name", SqlDbType.VarChar, 20));
_SqlCommand.Parameters.Add(new SqlParameter("@image", SqlDbType.Image));

_SqlCommand.Parameters[0].Value = "ImageName";
_SqlCommand.Parameters[1].Value = _ImageBytes;
执行这个SQLCOMMAND
读出的时候相反

具体的 代码:

//保存图片:
SqlConnection conn = new SqlConnection(@"data source=.;uid=sa;pwd=;database=master"); conn.Open();
SqlCommand cmd = new SqlCommand("insert into image values(@i)", conn);
byte[] ib = new byte[60000];
FileStream fs = new FileStream(this.openFileDialog1.FileName.ToString(), FileMode.Open, FileAccess.Read); fs.Read(ib, 0, 60000);
cmd.Parameters.Add("@i", SqlDbType.Image, (int)fs.Length);
cmd.Parameters["@i"].Value = ib;
cmd.ExecuteNonQuery();
conn.Close();
MessageBox.Show("保存成功"); /
/显示图片:
SqlConnection conn = new SqlConnection(@"data source=.;uid=sa;pwd=;database=master"); conn.Open();
SqlCommand cmd = new SqlCommand("select image1 from image", conn);
SqlDataReader reader = cmd.ExecuteReader();
reader.Read();
while (reader.Read())
{ for (int i = 0; i < reader.FieldCount; i++)
{ MemoryStream buf = new MemoryStream((byte[])reader[i]); I
mage image = Image.FromStream(buf,true);
this.pictureBox1.Image = image;
}
}

热心网友 时间:2022-04-08 07:09

创建一张测试表(sqlserver2000)
create table [pictable] (
[id] [int] identity (1, 1) not null ,
[img] [image] not null
) on [primary] textimage_on [primary]
go
1,插入数据库的方法(sqlserver2000)this.getConnection() 为获得连接的方法.
public void insertPic(String path)...{
Connection con = this.getConnection();
String sql = "insert into picTable values(?)" ;
try ...{
PreparedStatement pstm = con.prepareStatement(sql);
InputStream is = new FileInputStream(path);

pstm.setBinaryStream(1, is, is.available());
int count = pstm.executeUpdate();
if(count>0)...{
System.out.println("插入成功");
}else...{
System.out.println("插入失败");
}
is.close();
pstm.close();
con.close();

} catch (Exception e) ...{
e.printStackTrace();
}
}2,从数据库中读出来的方法.(sqlserver2000)
public void readPic(int id)...{
Connection con = this.getConnection();
String sql = "select * from picTable where id=?" ;
try ...{
PreparedStatement pstm = con.prepareStatement(sql);
pstm.setInt(1, id);
ResultSet rs = pstm.executeQuery();
rs.next();
InputStream is = rs.getBinaryStream(2);

OutputStream os = new FileOutputStream("f:/temp.jpg");
byte[] buff = new byte[1024];
int len = is.read(buff);
while( len !=-1 )...{
os.write(buff);
len = is.read(buff);
}
System.out.println("写入成功");
is.close();
os.close();
pstm.close();
con.close();
} catch (Exception e) ...{
e.printStackTrace();
}
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? 玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 朱砂手链可以戴吗?有什么忌讳吗 求 红色假期黑色婚礼百度云资源,第一部,可以直接看的 有一部韩国电影,女主角叫虹彩的影名是 红色礼服黑色婚礼2讲的什么 电影红色假期黑色婚礼,现求字幕文件,或有字幕的电影BT或其它链接!谢谢! 红色假期黑色婚礼2中有吴仁惠吗 红色假期黑色婚礼2写的什么故事 吴仁惠去世,她生前有哪些代表作? 这句话里“Two people&#39;s worlds ”说的是什么含义? 问一下 是 many people 还是 many peoples 为啥有时候是two people 有时候是two peoples 吴仁惠去世,生前都有过哪些作品? 吴仁惠的主要作品 two peoplep&#39;s word是什么意思 求红色假期黑色婚礼2高清百度云资源 红色假期黑色婚礼电影下载地址,要高清的 two people 的people为什么不加s ? 完美搭档 ,红色假期黑色婚礼 这2本韩国电影的中文字幕 可以说two people 或a people people可数,能说a people吗? two people? 红色假期黑色婚礼2完整剧情 如何拆接线端子,汽车上的 简述汽车线束插接器的拆装方法 法系车门线束怎么拆 吉普自由光主驾驶门缝线束插头怎么取? 这种汽车 线束 端子 怎么拔 这种接线端子怎么取下来啊?灯不可能拆下来,有办法把接线端子取下来吗? 拆卸汽车线束插件上的端子工具哪里买得到 谁知道雪铁龙C2后门线束接口怎么拆卸? 做汽车线束拆卸端子的工具哪里能买到 请教下 如何拆这种接线? 做的汽车线束,差错端子,没有专用工具还可以用什么可以撬 焊在板子的上的接线端子怎么拆下来 吸顶灯 接线端子怎么从底板上拆卸 汽车线束插端子的手法不正确参考一下 汽车OBD端子退针方法 宝马分哪些系列?具体介绍! C#winform窗口 如何将图片在picturebox中以相对路径存入SQL数据库然后从数据库中读取数据在picturebox中 华为nova可以root吗 我的华为nova4是在国外买的不能打汉子怎么办? c#如何把图片存取到SQL数据库