c# Winform下向access输入图片

xiaopei711 2009-11-08 11:48:12
c# Winform下向access输入图片

各位大侠:
现在小弟要做一个电子人员信息表,包括个人的基本信息和一张照片,用的是Access数据库。
请问如何把照片上传并保存到数据库里面?而且查询的时候还可以把照片显示出来。
谢谢了!
...全文
145 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaopei711 2009-11-09
  • 打赏
  • 举报
回复
谢谢楼上各位!!!
wuyq11 2009-11-08
  • 打赏
  • 举报
回复
string strConn = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source = {0}", Application.StartupPath + "\\a.mdb");
MemoryStream stream = new MemoryStream();
byte[] photo = null;
Image img = this.pictureBox1.Image;
img.Save(stream, System.Drawing.Imaging.ImageFormat.Bmp);
photo = stream.ToArray();
stream.Close();
string sql = "Insert into Tb(ID,Photo) Values ('1',@img)";
OleDbConnection conn = new OleDbConnection(strConn );
conn.Open();
OleDbCommand comm = new OleDbCommand(sql, conn);
comm.Parameters.Add("@img", OleDbType.VarBinary, photo.Length).Value = photo;
comm.ExecuteNonQuery();
conn.Close();


string sql = "Select photo From Tb Where ID='1'";
OleDbConnection conn = new OleDbConnection(strConn );
conn.Open();
OleDbCommand comm = new OleDbCommand(sql, conn);
OleDbDataReader sdr = comm.ExecuteReader();
sdr.Read();
MemoryStream ms = new MemoryStream((byte[])sdr[0]);
Image image = Image.FromStream(ms);
sdr.Close();
conn.Close();
pictureBox1.Image = image;
hhc123 2009-11-08
  • 打赏
  • 举报
回复
存路径可以吗?
lzsh0622 2009-11-08
  • 打赏
  • 举报
回复
"经费分析数据库.mdb" --> Application.StartupPath+@"\经费分析数据库.mdb"
xiaopei711 2009-11-08
  • 打赏
  • 举报
回复
我的程序如下:


string fullpath = E:\电脑图标\BMP图例\BestBMP48X48\2.bmp;//文件路径
FileStream fs = new FileStream(fullpath, FileMode.Open, FileAccess.Read);
byte[] imagebytes = new byte[fs.Length];
BinaryReader br = new BinaryReader(fs);
imagebytes = br.ReadBytes(Convert.ToInt32(fs.Length));
fs.Close();
//打开数所
OleDbConnection con1 = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + "经费分析数据库.mdb" + ";Persist Security Info=False");
con1.Open();
OleDbCommand cmd = con1.CreateCommand();
OleDbTransaction trans = con1.BeginTransaction();
cmd.Connection = con1;
cmd.Transaction = trans;

string strcomm = "insert into [单位人员信息]([照片])";
strcomm += "values('" + imagebytes + "')";
cmd.CommandText = strcomm;

int intFalg = cmd.ExecuteNonQuery();
trans.Commit();
if (intFalg == 1)
{
MessageBox.Show("保存图片成功");
pictureBox1.Image = null;
}
else
{
MessageBox.Show("保存图片失败");
pictureBox1.Image = null;
}
con1.Close();


我的Access数据库是在程序里面的Debug文件夹下,也就是默认文件夹下。
程序运行是却出现了下面的提示:
“找不到文件 'E:\电脑图标\BMP图例\BestBMP48X48\经费分析数据库.mdb'。”

不知道是为什么?
而且程序里面别的地方用同样的方法连接数据库都是正确的。

请高手指点,
还有,看看程序还有没有别的问题。谢谢!
xiaopei711 2009-11-08
  • 打赏
  • 举报
回复
xiexie楼上各位!
再麻烦一下:
2楼的高手可否给程序解释一下?
刚学。不是很懂!
谢谢!
lzsh0622 2009-11-08
  • 打赏
  • 举报
回复
2楼正解.

(1)照片采集时,读照片文件流,参过参数写库
(2)界面显示时,从库中读IMage字段,通过PictrueBox显示。
(3)一个单位,人数有限,每个照片20-30KB,可以采用存入数据库的形式。
shelless 2009-11-08
  • 打赏
  • 举报
回复
图片就不要存到数据库了,存个路径就好了。

111,115

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧