1、可以建立一个字段 将其数据类型改为OLE对象 然后直接粘贴
2、或用将转换为二进制 存入数据库中
3、用普通字段放一个路径 指向 直接让显示
第三种方法最好了 直接存入数据库,数据库会很大的。。。
一般图像是不保存在数据库的而是先将放在工程下的某个文件夹中,将所在的工程文件路径存在数据库中,当程序加载的时候,从数据库中读取的路径,然后根据路径在工程的文件夹中读取文件
第一步://获取当前选择的thispictureBox1Image = ImageFromStream(thisopenFileDialog1OpenFile());//获取当前的路径string path = openFileDialog1FileNameToString();//将制定路径的添加到FileStream类中FileStream fs = new FileStream(path, FileModeOpen, FileAccessRead);//通过FileStream对象实例化BinaryReader对象BinaryReader br = new BinaryReader(fs);//通过BinaryReader类对象的ReadBytes()方法将FileStream类对象转化为二进制数组byte[] imgBytesIn = brReadBytes(ConvertToInt32(fsLength));第二步://将添加到数据库中string sql="insert into pic values(@pic)";SqlParameter[] param = new SqlParameter[] { new SqlParameter("@pic", imgBytesIn) };DBHelperGetExecuteQuery(sql, param);第三步://将从数据库中取出string sql="select from pic where id=0";SqlDataReader reader = DBHelperGetExecuteReader(sql, null);MemoryStream mss = null;
首先存储主要是要保存到一个表内的字段里。要确定保存的字段类型为二进制数组等可用的类型,
然后一般的sql工具都能把变成二进制序列。到时候直接存入的时候存成
2进制
数列就可以。
等取出的时候用二进制流取出然后做成跟文件,然后拼接上原来存入文件的
扩展名
就是你刚才存入的文件。
插入到数据库不是个好方法,如果你确实要存储到数据库的话,修改你的sql语句,不可以直接插入的。
INSERT into person(p_id,p_name,p_sex,p_age) value("asdsadssdsadfff","addsdsa","dddd",113);
update person set p_image = LOAD_FILE('D:\incident1jpg') where p_id = "asdsadssdsadfff";
建议把'D:\incident1jpg'放在mysl的安装目录里面,避免权限问题。。。
解释:sql必须要有对 'D:\incident1jpg'文件 和相应的路径 读权限,要不也不可以的。 另外检查LOAD_FILE 函数是否被禁用。这个函数是个危险的函数,很容易利用该函数对数据库攻击。
LOAD_FILE(file_name):
读取file_name文件 并以字符串形式返回,使用这个函数时,file_name必须存在于服务器上,而且是完整路径,sql要具有file_name的读取权限,还有该文件的size必须小于数据库 max_allowed_packet的值,否则读取的值为空。如果文件不存在或者sql没有读权限,那么该函数讲返回null
一般的是上传到网站的某个目录然后把的地址存入数据库 如果非要存的话,就用读取文件的形式,读取的二进制码 $data = addslashes(fread(fopen($form_data, "r"), filesize($form_data))); 然后存入数据库好了。。
以上就是关于在access数据库中如何添加图片全部的内容,包括:在access数据库中如何添加图片、怎样将图片存在数据库里面、如何将图片插入到数据库中等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)