如何用C#实现把图片存到数据库中,读出来,那位高手能帮一下,急盼中!!!! 因为要做毕业设计,不会把图片存储到数据库和从数据库读出来,高手能给一个例子吗?能发到谢谢了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Data.Sql; using System.Data.SqlClient; using System.IO; namespace 读取图片 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void openFileDialog1_FileOk(object sender, CancelEventArgs e) { //把图片读到picturebox,再写入数据库 try { 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("保存成功"); } catch(Exception E) { MessageBox.Show(E.Message); } } private Image imagefromstream(MemoryStream buf, bool p) { throw new Exception("The method or operation is not implemented."); } private void toolStripButton1_Click(object sender, EventArgs e) { this.openFileDialog1.Filter = "jpg files (*.jpg) ¦*.jpg"; this.openFileDialog1.ShowDialog(); } 显示图片: private void toolStripButton2_CheckedChanged(object sender, EventArgs e) { 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]); Image image = Image.FromStream(buf,true); this.pictureBox1.Image = image; } } } 把图片上传到数据库,并显示出来,查看该列占用了多大空间//上传到数据库,关键是设置SQLPARAMETERS参数类型为IMAGE,其它照常,显示时的关键代码C# codecontext.Response.Clear(); context.Response.Buffer = true; context.Response.OutputStream.Write(bDefaultPhoto, 0, bDefaultPhoto.Length); context.Response.End(); 图片在数据库里用image类型存储,一楼的方法就行,但读取文件的时候我认为不要直接设定byte[]数组的大小 byte[] ib = new byte[60000]; 可以这样定大小 string FilePath="C:\\aa.jpg";FileInfo fi=new FileInfo(FilePath);byte[] ib=new byte[fi.length]; 是存地址的还有就是如果存进数据库以后我是用一个Image控件来读出来的this.Image1.? = Dt.Rows[0][8].ToString();请问?用什么来代替的,我本来用Text的,但是系统提示错误 我不是用Form来做的,我新建一个ASP.NET网站,用Default.aspx 将图片转换成byte.MemoryStream ms=new MemoryStream();im.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg);byte[] myData=new Byte[ms.length];ms.Position=0;ms.Read(myData,0,Convert.ToInt32(ms.length));cmd.Parameters["@photo"].Value=myDate; 读取图象:byte[] byteoledbdata=new byte[0];byteoledbdata=(byte[])dr[0];memorystream stm=new memorystream(byteoledbdata);im=image.FormStream(stm); ComboBox的DataBindings问题 请教一下算法问题 如何修改Asp.net文本编辑器的上传大小限制 数据表中记录为何会“隐身”? 怎么让控件和窗体大小一起作协调变化??? 在asp.net中怎样检测在文本框中按下了回车键? Winform里有RadioButtonList吗 C# 多线程数组,如何得到当前线程的名字? Web中的Panel问题! 如何将复选列表框中的某项设为禁选状态? asp.net局部刷新updatepanel哪里有问题? 请教一个关于TcpClient NetworkStream通信的问题
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.Sql;
using System.Data.SqlClient;
using System.IO; namespace 读取图片
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
{
//把图片读到picturebox,再写入数据库
try
{
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("保存成功");
}
catch(Exception E)
{
MessageBox.Show(E.Message);
}
} private Image imagefromstream(MemoryStream buf, bool p)
{
throw new Exception("The method or operation is not implemented.");
} private void toolStripButton1_Click(object sender, EventArgs e)
{
this.openFileDialog1.Filter = "jpg files (*.jpg) ¦*.jpg";
this.openFileDialog1.ShowDialog();
} 显示图片:
private void toolStripButton2_CheckedChanged(object sender, EventArgs e)
{
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]);
Image image = Image.FromStream(buf,true);
this.pictureBox1.Image = image;
}
}
}
//上传到数据库,关键是设置SQLPARAMETERS参数类型为IMAGE,其它照常,显示时的关键代码C# codecontext.Response.Clear();
context.Response.Buffer = true;
context.Response.OutputStream.Write(bDefaultPhoto, 0, bDefaultPhoto.Length);
context.Response.End();
可以这样定大小
string FilePath="C:\\aa.jpg";
FileInfo fi=new FileInfo(FilePath);
byte[] ib=new byte[fi.length];
还有就是如果存进数据库以后我是用一个Image控件来读出来的this.Image1.? = Dt.Rows[0][8].ToString();
请问?用什么来代替的,我本来用Text的,但是系统提示错误
MemoryStream ms=new MemoryStream();
im.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] myData=new Byte[ms.length];
ms.Position=0;
ms.Read(myData,0,Convert.ToInt32(ms.length));
cmd.Parameters["@photo"].Value=myDate;
byte[] byteoledbdata=new byte[0];
byteoledbdata=(byte[])dr[0];
memorystream stm=new memorystream(byteoledbdata);
im=image.FormStream(stm);