求c#示例代码:把c:\1.jpg存入sql的image字段,再从数据库读出,存为c:\2.jpg 如题 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个是我在我的机器上面作的测试,好像没有什么问题,你看一下.针对你的SQL你换一下命名空间和使用sqlclient就可以了(三个button ,一个文本输入,一个picturebox)private void Form1_Load(object sender, System.EventArgs e){this.button2.Enabled = false;this.button2.Text = "上传至库";this.button1.Text = "上传文件";this.button3.Text = "根据ID显示图片";this.strSqlConn = @"Data Source=""F:\C#\ImageToDb\bin\Debug\db.mdb"";Provider=""Microsoft.Jet.OLEDB.4.0"";";}private void button2_Click(object sender, System.EventArgs e){if (this.textBox1.Text != string.Empty ){try{fs = new FileStream( this.filename,FileMode.Open );bytes = new byte[(int)fs.Length];int intFile = fs.Read( bytes,0,bytes.Length);if (intFile>0){conn = new OleDbConnection( this.strSqlConn );this.strSqlCmd = "Insert into tab (Img,title,des) values (@ph,@title,@des)" ;cmd = new OleDbCommand( strSqlCmd,conn );conn.Open();cmd.Parameters.Add("@ph",OleDbType.Binary);cmd.Parameters.Add("@title",OleDbType.VarChar);cmd.Parameters.Add("@des",OleDbType.LongVarWChar);cmd.Parameters["@title"].Value = "标题";cmd.Parameters["@ph"].Value = this.bytes;cmd.Parameters["@des"].Value = "这个是备注说明字段";int intS = cmd.ExecuteNonQuery();if (intS<0){MessageBox.Show("更新失败");}MessageBox.Show("成功更新");}}catch(Exception ex){MessageBox.Show( ex.Message );}finally{conn.Close();fs.Flush();fs.Close();}}else{MessageBox.Show("请输入准考证号");}}private void button3_Click(object sender, System.EventArgs e){try{conn = new OleDbConnection( this.strSqlConn);this.strSqlCmd = "Select img From tab Where id = " + this.textBox1.Text + "";conn.Open();cmd = new OleDbCommand( strSqlCmd,conn );object obj = cmd.ExecuteScalar();this.bytes = (byte[])obj;using ( MemoryStream ms = new MemoryStream( bytes,0,bytes.Length )){Bitmap bmp = new Bitmap( ms );this.pictureBox1.Image = bmp;}}catch(Exception ex){MessageBox.Show(ex.Message,"出错了!",MessageBoxButtons.OK,MessageBoxIcon.Error);}finally{conn.Close();}} 保存通过:pictureboxy读,另存也可从PICTURE,我没写存的,只是在PICTURE中显示sql="";//保存SQLSqlCommand cmd=new SqlCommand(sql,connect);MemoryStream s = new MemoryStream();picPhoto.Image.Save(s,System.Drawing.Imaging.ImageFormat.Jpeg);byte[] b = s.ToArray();s.Close();cmd.Parameters.Add("@i",SqlDbType.Image,(int)b.Length);cmd.Parameters["@i"].Value=b;cmd.ExecuteNonQuery();private void Readphoto(string id){ try { //读取图象 string ls_sql=“”插入数据库的语句 this.picPhoto.Image=null; this.picPhoto.Refresh(); SqlCommand cmd=new SqlCommand(ls_sql,connetct); SqlDataReader reader=cmd.ExecuteReader(); while(reader.Read()) { byte[] b = (byte[])reader[0]; MemoryStream s = new MemoryStream(b); Bitmap bmp = new Bitmap(s); System.Drawing.Image image = bmp; picPhoto.Image = image; s.Close(); } reader.Close(); }catch(Exception ex){ MessageBox.Show(ex.Message);}} FileInfo fi = new FileInfo(@"c:\1.jpg"); FileStream ffs = File.OpenRead(@"c:\1.jpg"); byte[] bytes = new byte[(int)ffs.Length]; string cmd = "update test1 set t5 = @t5"; System.Data.SqlClient.SqlConnection sc = new System.Data.SqlClient.SqlConnection(this.sqlConnection1.ConnectionString); System.Data.SqlClient.SqlCommand sql = new System.Data.SqlClient.SqlCommand(cmd,sc); sql.Parameters.Clear(); sql.Parameters.Add("@t5",bytes); sc.Open(); try { sql.ExecuteNonQuery(); } catch(System.Exception ee) {MessageBox.Show(ee.Message,ee.TargetSite.ToString());} sc.Close(); this.sqlDataAdapter2.Fill(this.dataSet11,"temp_err"); this.sqlDataAdapter1.Fill(this.dataSet11,"test1"); object ph = this.dataSet11.test1.Rows[0]["t5"]; byte[] bt = (byte[])ph; FileStream fs = File.Create(@"c:\22.jpg",bt.Length); fs.Write(bt,0,bt.Length); fs.Close(); MessageBox.Show(bt.Length.ToString());22.jpg的大小和1.jpg一样,但是为什么不能被作为图片浏览?在ie或者acdsee里面显示不出图片来。 ACDsee软件的设计原理 操作excel的问题 请教,这句是什么意思? C#.net連odbc時出錯 使用NDoc时的一个问题 C#中有没有使方法返回只读对象? Remoting中的远程事件回调问题,各位大虾赐教啊!!! 如何解析XML 请问这个什么控件?工具箱自带的好像达不到这种效果 关于线程的问题(传递参数) 如何做一个浏览按钮(像安装文件时选择目录那样) 怎样用异常拦截数据库的外键冲突?
(三个button ,一个文本输入,一个picturebox)private void Form1_Load(object sender, System.EventArgs e)
{
this.button2.Enabled = false;
this.button2.Text = "上传至库";
this.button1.Text = "上传文件";
this.button3.Text = "根据ID显示图片";this.strSqlConn = @"Data Source=""F:\C#\ImageToDb\bin\Debug\db.mdb"";Provider=""Microsoft.Jet.OLEDB.4.0"";";
}private void button2_Click(object sender, System.EventArgs e)
{
if (this.textBox1.Text != string.Empty )
{
try
{
fs = new FileStream( this.filename,FileMode.Open );
bytes = new byte[(int)fs.Length];
int intFile = fs.Read( bytes,0,bytes.Length);
if (intFile>0)
{
conn = new OleDbConnection( this.strSqlConn );
this.strSqlCmd = "Insert into tab (Img,title,des) values (@ph,@title,@des)" ;
cmd = new OleDbCommand( strSqlCmd,conn );
conn.Open();
cmd.Parameters.Add("@ph",OleDbType.Binary);
cmd.Parameters.Add("@title",OleDbType.VarChar);
cmd.Parameters.Add("@des",OleDbType.LongVarWChar);
cmd.Parameters["@title"].Value = "标题";
cmd.Parameters["@ph"].Value = this.bytes;
cmd.Parameters["@des"].Value = "这个是备注说明字段";
int intS = cmd.ExecuteNonQuery();
if (intS<0)
{
MessageBox.Show("更新失败");
}
MessageBox.Show("成功更新");
}
}
catch(Exception ex)
{
MessageBox.Show( ex.Message );
}
finally
{
conn.Close();
fs.Flush();
fs.Close();
}
}
else
{
MessageBox.Show("请输入准考证号");
}
}private void button3_Click(object sender, System.EventArgs e)
{
try
{
conn = new OleDbConnection( this.strSqlConn);
this.strSqlCmd = "Select img From tab Where id = " + this.textBox1.Text + "";
conn.Open();
cmd = new OleDbCommand( strSqlCmd,conn );
object obj = cmd.ExecuteScalar();
this.bytes = (byte[])obj;
using ( MemoryStream ms = new MemoryStream( bytes,0,bytes.Length ))
{
Bitmap bmp = new Bitmap( ms );
this.pictureBox1.Image = bmp;
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message,"出错了!",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
finally
{
conn.Close();
}
}
通过:pictureboxy读,另存也可从PICTURE,我没写存的,只是在PICTURE中显示
sql="";//保存SQL
SqlCommand cmd=new SqlCommand(sql,connect);
MemoryStream s = new MemoryStream();
picPhoto.Image.Save(s,System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] b = s.ToArray();
s.Close();
cmd.Parameters.Add("@i",SqlDbType.Image,(int)b.Length);
cmd.Parameters["@i"].Value=b;
cmd.ExecuteNonQuery();private void Readphoto(string id)
{
try
{ //读取图象
string ls_sql=“”插入数据库的语句
this.picPhoto.Image=null;
this.picPhoto.Refresh();
SqlCommand cmd=new SqlCommand(ls_sql,connetct);
SqlDataReader reader=cmd.ExecuteReader();
while(reader.Read())
{
byte[] b = (byte[])reader[0];
MemoryStream s = new MemoryStream(b);
Bitmap bmp = new Bitmap(s);
System.Drawing.Image image = bmp;
picPhoto.Image = image;
s.Close();
}
reader.Close();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
FileStream ffs = File.OpenRead(@"c:\1.jpg");
byte[] bytes = new byte[(int)ffs.Length];
string cmd = "update test1 set t5 = @t5";
System.Data.SqlClient.SqlConnection sc = new System.Data.SqlClient.SqlConnection(this.sqlConnection1.ConnectionString);
System.Data.SqlClient.SqlCommand sql = new System.Data.SqlClient.SqlCommand(cmd,sc);
sql.Parameters.Clear();
sql.Parameters.Add("@t5",bytes);
sc.Open();
try
{
sql.ExecuteNonQuery();
}
catch(System.Exception ee)
{MessageBox.Show(ee.Message,ee.TargetSite.ToString());}
sc.Close(); this.sqlDataAdapter2.Fill(this.dataSet11,"temp_err");
this.sqlDataAdapter1.Fill(this.dataSet11,"test1"); object ph = this.dataSet11.test1.Rows[0]["t5"];
byte[] bt = (byte[])ph;
FileStream fs = File.Create(@"c:\22.jpg",bt.Length);
fs.Write(bt,0,bt.Length);
fs.Close();
MessageBox.Show(bt.Length.ToString());22.jpg的大小和1.jpg一样,但是为什么不能被作为图片浏览?在ie或者acdsee里面显示不出图片来。