C#社区从未有过的难题!!ACCESS数据库的图片存取问题! 可以存到 Access数据库的,我发个例子 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://dev.xxsky.com/20040918/20040918130121.html 哦,是我尊敬的孟子大哥啊,我的Email: [email protected]QQ:63308611我等着 http://dev.xxsky.com/20040918/20040918130121.htmlhttp://dev.xxsky.com/20040918/20040918130210.html OleDbCommand cm=new OleDbCommand("insert into 类别 (图片) values (@i)",conn);cm.Parameters.Add("@i",OleDbType.Binary);cm.Parameters["@i"].Value=b;cm.ExecuteNonQuery(); 这是成功的例子//构建数据库连接,SQL语句,创建参数string strCnn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("Image2Access.mdb");OleDbConnection myConnection = new OleDbConnection(strCnn);OleDbCommand command = new OleDbCommand ("INSERT INTO Person (PersonName,PersonEmail,PersonSex,PersonImageType,PersonImage)" + "VALUES (@PersonName,@PersonEmail,@PersonSex,@PersonImageType,@PersonImage)", myConnection);System.Data.OleDb.OleDbParameter paramPersonName = new OleDbParameter("@PersonName", System.Data.OleDb.OleDbType.VarChar,50); paramPersonName.Value = fileTitle;command.Parameters.Add(paramPersonName);System.Data.OleDb.OleDbParameter paramPersonEmail = new OleDbParameter("@PersonEmail", System.Data.OleDb.OleDbType.VarChar,50);paramPersonEmail.Value = "[email protected]";command.Parameters.Add(paramPersonEmail);System.Data.OleDb.OleDbParameter paramPersonSex = new OleDbParameter("@paramPersonSex", System.Data.OleDb.OleDbType.VarChar,50); paramPersonSex.Value = "男";command.Parameters.Add(paramPersonSex);System.Data.OleDb.OleDbParameter paramPersonImageType = new OleDbParameter("@PersonImageType", System.Data.OleDb.OleDbType.VarChar,50);paramPersonImageType.Value = fileType;command.Parameters.Add(paramPersonImageType);System.Data.OleDb.OleDbParameter paramPersonImage = new OleDbParameter("@PersonImage", System.Data.OleDb.OleDbType.Binary); paramPersonImage.Value = fileData;command.Parameters.Add(paramPersonImage);//打开连接,执行查询myConnection.Open();command.ExecuteNonQuery();myConnection.Close(); net_lover(孟子E章) 兄:我安装您的方法试验了,去掉(int)b.Length,结果在cm.ExecuteNonQuery();出现错误:未处理的“System.Data.OleDb.OleDbException”类型的异常出现在 system.data.dll 中。 net_lover(孟子E章) ,我试过了,还是不行!我想,既然这后面的插入代码我们的都一样,那是不是因为前面的转换二进制的代码有问题啊?就是:MemoryStream s = new MemoryStream();pictureBox1.Image.Save(s,System.Drawing.Imaging.ImageFormat.Bmp);byte[] b = s.ToArray();请赐教!感激不尽! 这个贴我有兴趣.Access2000中没有二进制的数据类型,这个("@PersonImage", System.Data.OleDb.OleDbType.Binary); 怎么能进去呢? 孟子E章说的对。楼主说的也对,但你可能是数据库设计的问题,如其他字段被设计成必填项。BlueLevin(蔚蓝闪电,主宰自我世界) 说的不太对,因为ACCESS中是没有明确说有二进制的类型,但OLE就是二进制。它可以包括WORD/EXCEL/各种图片格式。关键是:cmd.Parameters.Add("@i",SqlDbType.Binary,(int)fs.Length); C# WINFORM 鼠标右键弹出菜单问题 winform 如何带参数运行 在WinForm DataGridView一列如何绑定多个字段? 用c#操作注册表时碰到空格,怎么办 C# 程序若连接Oracle ,必须要安装客户端吗?????????? TabControl中TabPage上的Text那一栏可以设置为不显示吗? 写入超时问题,谁会啊 C#调用REAL的问题 窗体连接到水晶报表的问题急? 求解! 又是DropDownList问题,解决即结贴!! 类的实例化问题,顶者有分
QQ:63308611
我等着
cm.Parameters.Add("@i",OleDbType.Binary);
cm.Parameters["@i"].Value=b;
cm.ExecuteNonQuery();
string strCnn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("Image2Access.mdb");
OleDbConnection myConnection = new OleDbConnection(strCnn);
OleDbCommand command = new OleDbCommand ("INSERT INTO Person (PersonName,PersonEmail,PersonSex,PersonImageType,PersonImage)" +
"VALUES (@PersonName,@PersonEmail,@PersonSex,@PersonImageType,@PersonImage)", myConnection);System.Data.OleDb.OleDbParameter paramPersonName = new OleDbParameter("@PersonName", System.Data.OleDb.OleDbType.VarChar,50);
paramPersonName.Value = fileTitle;
command.Parameters.Add(paramPersonName);System.Data.OleDb.OleDbParameter paramPersonEmail = new OleDbParameter("@PersonEmail", System.Data.OleDb.OleDbType.VarChar,50);
paramPersonEmail.Value = "[email protected]";
command.Parameters.Add(paramPersonEmail);System.Data.OleDb.OleDbParameter paramPersonSex = new OleDbParameter("@paramPersonSex", System.Data.OleDb.OleDbType.VarChar,50);
paramPersonSex.Value = "男";
command.Parameters.Add(paramPersonSex);System.Data.OleDb.OleDbParameter paramPersonImageType = new OleDbParameter("@PersonImageType", System.Data.OleDb.OleDbType.VarChar,50);
paramPersonImageType.Value = fileType;
command.Parameters.Add(paramPersonImageType);System.Data.OleDb.OleDbParameter paramPersonImage = new OleDbParameter("@PersonImage", System.Data.OleDb.OleDbType.Binary);
paramPersonImage.Value = fileData;
command.Parameters.Add(paramPersonImage);//打开连接,执行查询
myConnection.Open();
command.ExecuteNonQuery();
myConnection.Close();
我安装您的方法试验了,去掉(int)b.Length,结果
在cm.ExecuteNonQuery();出现错误:未处理的“System.Data.OleDb.OleDbException”类型的异常出现在 system.data.dll 中。
我想,既然这后面的插入代码我们的都一样,那是不是因为前面的转换二进制的代码有问题啊?
就是:MemoryStream s = new MemoryStream();
pictureBox1.Image.Save(s,System.Drawing.Imaging.ImageFormat.Bmp);
byte[] b = s.ToArray();请赐教!
感激不尽!
楼主说的也对,但你可能是数据库设计的问题,如其他字段被设计成必填项。
BlueLevin(蔚蓝闪电,主宰自我世界) 说的不太对,因为ACCESS中是没有明确说有二进制的类型,但OLE就是二进制。它可以包括WORD/EXCEL/各种图片格式。关键是:cmd.Parameters.Add("@i",SqlDbType.Binary,(int)fs.Length);