十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
因为项目需求,必须要把图片存储到mysql数据库中.
成都创新互联是一家专业提供邕宁企业网站建设,专注与成都网站建设、成都网站制作、成都h5网站建设、小程序制作等业务。10年已为邕宁众多企业、政府机构等服务。创新互联专业网络公司优惠进行中。
首先 mysql数据库中的表 test 字段 photo 字段的类型是 mediumblob
执行插入数据的时候报: MySql.Data.MySqlClient.MySqlException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near
意思是sql语句不对!语法错误!
麻烦各位大侠帮帮忙,真的很急.谢谢了.困扰 很久了.一直找不到出点,所以才来找大家的!!!
---------------------------操作数据库的方法开始---------------------------
public static void AddPhoto(byte[] image)
{
//建立数据库连接
MySqlConnection conn = new MySqlConnection("server=127.0.0.1;user id=root;password=FLUser;database=banklgs");
conn.Open();
//设置命令参数
string insertStr = "insert into test(photo) values(?photo)";
MySqlCommand comm = new MySqlCommand();
comm.Connection = conn;
comm.CommandText = insertStr;
comm.CommandType = CommandType.Text;
//设置数据库字段类型MediumBlob的值为图片字节数组imageByte
MySqlParameter paraPhoto = new MySqlParameter("?photo", MySqlDbType.MediumBlob);
paraPhoto.Value = image;
comm.Parameters.Add(paraPhoto);
//执行命令
try
{
comm.ExecuteNonQuery();
}
catch (Exception ex)
{
ex.ToString();
}
}
---------------------------操作数据库的方法结束---------------------------
用的是 PictureBox 控件!
---------------------------将图片转换为byte的地方开始---------------------------
private void photoPictureBox_DoubleClick(object sender, EventArgs e)
{
Stream photoStream = null;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
try
{
string pathName = openFileDialog1.FileName;
if ((photoStream = openFileDialog1.OpenFile()) != null)
{
using (photoStream)
{
if (photoStream.Length 50 * 1024)//文件不应大于50K
{
this.infoPanel1.ShowInfo(InfoPanel.TipType.ERROR, "文件大小不超过50K");
return;
}
//将图像读入到字节数组
byte[] buffByte = new byte[photoStream.Length];
int ret = photoStream.Read(buffByte, 0, (int)photoStream.Length);
this.photo = buffByte;
Image image = Image.FromStream(photoStream, true);
Image imgPhoto = image;
if (buffByte.Length 15000)
文章知识点与官方知识档案匹配
MySQL入门技能树使用数据库 创建和删除数据库
33009 人正在系统学习中
点击阅读全文
打开CSDN APP,看更多技术内容
将图片存入mysql数据库中
将图片存入mysql数据库中,比如说用户头像保存到数据库以便信息的管理
mysql存储图片_浅谈怎么才能在MySQL中直接储存图片
如果你想把二进制的数据,比如说图片文件和HTML文件,直接保存在你的MySQL数据库,那么这篇文章就是为你而写的!我将告诉你怎样通过HTML表单来储存这些文件,怎样访问和使用这些文件。本文概述:在mysql中建立一个新的数据库一个怎样储存文件的例子程序一个怎样访问文件的例子程序在mysql中建立一个新的database首先,你必须在你的mysql中建立一个新的数据库,我们将会把那些二进制文件储存在...
继续访问
mysql存储图片
转载 mysql可以存储图片,并且有两种存储方法,分别是:1、将图片保存的路径存储到数据库;2、将图片以二进制数据流的形式直接写入数据库字段中。 可以存储图片。在mysql存储图片的方法一般有两种:其一,将图片保存的路径存储到数据库;其二,将图片以二进制数据流的形式直接写入数据库字段中。 一、保存图片的上传路径到数据库: string uppath="";//用于保存图片上传路径 //获取上传图片的文件名 string fileFullname = this.FileUpload1.FileNa
继续访问
最新发布 实战演练 | 使用 Navicat 在 MySQL 中存储图像
在今天的博客中,我们学习了如何使用Navicat Premium将图像存储在 MySQL 8数据库中。详情请点击全文~
继续访问
如何将图片存进SQL数据库中以及从数据库读取照片(解决办法)
如何将图片存进SQL数据库,以及如何从数据库中读取图片。
继续访问
Mysql对于图片的保存和取出(超详细步骤全带注释)
LONGBLOB:最多存储4,294,967,295字节的数据。MEDIUMBLOB:支持的最大长度为16,777,215字节。约等于 16363KB , 15.9MB。上传和取出的代码记得修改文件改成图片位置(现在我用的是我直接的) 不然文件会报错!对于数据库的连接代码是这个,使用的时候不要忘记修改连接数据库的账号密码 以及连接使用的数据库。BLOB:最多可以处理65,535字节的数据。约等于 63kb , 0.0624MB。对于数据库的保存 把这里改成图像就可以对于数据库进行图片预览。
继续访问
关于MySQL 中存取图片数据
使用mysql存取图片
继续访问
mysql实现添加图片_如何往mysql中添加图片
往mysql中添加图片的方法:首先创建一个方法使用FileInputStream读取图片;然后连接数据库并写入sql语句,用PreparedStatement执行sql语句。本教程操作环境:windows7系统、mysql8.0.22版,该方法适用于所有品牌电脑。相关免费学习推荐:mysql视频教程往mysql中添加图片的方法:1.效果不是存了个字符串哈,可以看左边的数据类型。2. 获取blob数...
继续访问
图片插入mysql数据库_图片如何存入数据库?
展开全部1、新建一个数据库32313133353236313431303231363533e59b9ee7ad9431333431356566,数据库名为Image,表名为image。并为表添加ID,tupian两个列。2、新建一个项目(Photo),在工具箱中往窗体中拖入一个PictureBox控件,两个Button按钮,一个OpenFileDialog控件。并修改pictureBox1控件的属...
继续访问
mysql怎么放入图片_怎么将图片添加到mysql中
将图片添加到mysql中的方法:首先将数据库存储图片的字段类型设置为blob二进制大对象类型;然后将图片流转化为二进制;最后将图片插入数据库即可。正常的图片储存要么放进本地磁盘,要么就存进数据库。存入本地很简单,现在我在这里记下如何将图片存进mysql数据库如果要图片存进数据库 要将图片转化成二进制。1.数据库存储图片的字段类型要为blob二进制大对象类型2.将图片流转化为二进制下面放上代码实例...
继续访问
将图片存储到mysql数据库
正常的图片储存要么放进本地磁盘,要么就存进数据库。存入本地很简单,现在我在这里记下如何将图片存进mysql数据库 如果要图片存进数据库 要将图片转化成二进制。 1.数据库存储图片的字段类型要为blob二进制大对象类型 2.将图片流转化为二进制 下面放上代码实例 一、数据库 CREATE TABLE `photo` ( `id` int(11) NOT NULL, `name` varchar(255) DEFAULT NULL, `photo` blob, PRIMARY KEY (`id
继续访问
mysql 图片_将图片储存在MySQL数据库中的几种方法
通常对用户上传的图片需要保存到数据库中。解决方法一般有两种:1、将图片保存的路径存储到数据库;2、将图片以二进制数据流的形式直接写入数据库字段中。以下为具体方法:一、保存图片的上传路径到数据库:string uppath="";//用于保存图片上传路径//获取上传图片的文件名string fileFullname = this.FileUpload1.FileName;//获取图片上传的时间,以时...
继续访问
如何把图片储存在mysql里_如何将图片储存在数据库里_MySQL
如果你想把二进制的数据,比如说图片文件和HTML文件,直接保存在你的MySQL数据库,那么这篇文章就是为你而写的!我将告诉你怎样通过HTML表单来储存这些文件,怎样访问和使用这些文件。本文概述:。在mysql中建立一个新的数据库。一个怎样储存文件的例子程序。一个怎样访问文件的例子程序在mysql中建立一个新的database首先,你必须在你的mysql中建立一个新的数据库,我们将会把那些二进制文件...
继续访问
热门推荐 mysql存储和读取图片
首先,介绍一下mysql相关的数据类型
继续访问
如何将图片保存至数据库?
通常对用户上传的图片需要保存到数据库中。解决方法一般有两种:一种是将图片保存的路径存储到数据库;另一种是将图片以二进制数据流的形式直接写入数据库字段中。以下为具体方法:一、保存图片的上传路径到数据库: string uppath="";//用于保存图片上传路径 //获取上传图片的文件名 string fileFullname = this.FileUpload1.FileName...
继续访问
关于图片或者文件在数据库的存储方式归纳
商品图片,用户上传的头像,其他方面的图片。目前业界存储图片有两种做法: 1、 把图片直接以二进制形式存储在数据库中 一般数据库提供一个二进制字段来存储二进制数据。比如mysql中有个blob字段。oracle数据库中是blob或bfile类型 2、 图片存储在磁盘上,数据库字段中保存的是图片的路径。 一、图片以二进制形式直接存储在数据库中 第一种存储实现(php语言...
继续访问
把图片存入mysql数据库
/* * 把图片存入mysql数据库 * # # 数据表的结构 `images` #CREATE TABLE images ( picid int(3) NOT NULL auto_increment, picdata longblob NOT NULL, pictext varchar(100) NOT NULL default , PRIMARY KEY (picid)) T
继续访问
怎么把图片存入mysql
以下的文章主要介绍的是MySQLtext与blob字段类型的不同之处的比较,同时本文也有对MySQLtext与blob字段类型的实际应用的介绍,如果你对MySQLtext与blob字段类型相关的实际操作有兴趣的话,你就可以对以下的文章点击观看了。1.blob是二进制大对象,可以容纳可变量数量的数据,其中blob分为4中类型:TINYBLOB,BLOB,mediumblob和LongBlob,他们容纳的长度是不同的.Text同样也分为四种类型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT2.blob被视为二进制字符串,Text被视为非二进制字符串;blob列没有字符集,并且排序和比较基于列值字节的数值值。TEXT列有一个字符集,并且根据字符集的校对规则对值进行排序和比较。在MySQLTEXT或BLOB列的存储或检索过程中,不存在大小写转换,当未运行在严格模式时,如果你为BLOB或TEXT列分配一个超过该列类型的最大长度的值值,值被截取以保证适合。如果截掉的字符不是空格,将会产生一条警告。使用严格SQL模式,会产生错误,并且值将被拒绝而不是截取并给出警告.在大多数方面,可以将BLOB列视为能够足够大的VARBINARY列。同样,可以将TEXT列视为VARCHAR列。3.BLOB和TEXT在以下几个方面不同于VARBINARY和VARCHAR.BLOB和TEXT列不能有默认值.当保存或检索BLOB和TEXT列的值时不删除尾部空格。(这与VARBINARY和VARCHAR列相同).对于BLOB和TEXT列的索引,必须指定索引前缀的长度。对于CHAR和VARCHAR,前缀长度是可选的.LONG和LONGVARCHAR对应MEDIUMTEXT数据类型。这是为了保证兼容性。如果TEXT列类型使用BINARY属性,将为列分配列字符集的二元校对规则.MySQL连接程序/ODBC将BLOB值定义为LONGVARBINARY,将MySQLTEXT值定义为LONGVARCHAR。由于BLOB和TEXT值可能会非常长,使用它们时可能遇到一些约束.BLOB或TEXT对象的最大大小由其类型确定,但在客户端和服务器之间实际可以传递的最大值由可用内存数量和通信缓存区大小确定。你可以通过更改max_allowed_packet变量的值更改消息缓存区的大小,但必须同时修改服务器和客户端程序。例如,可以使用MySQL和MySQLdump来更改客户端的max_allowed_packet值.
BLOB类型的字段用于存储二进制数据
MySQL中,BLOB是个类型系列,包括:TinyBlob、Blob、MediumBlob、LongBlob,这几个类型之间的唯一区别是在存储文件的最大大小上不同。
MySQL的四种BLOB类型
类型 大小(单位:字节)
TinyBlob 最大 255
Blob 最大 65K
MediumBlob 最大 16M
LongBlob 最大 4G
取二进制数据:
一样的sql语句,查询出来即可。只不过二进制数据是个数据块,需要得到数据块的大小和数据指针。
bool CMySqlAccess::GetBinaryField(int nCol,char* pDataOut,int nDataLen)
{
if (m_ItemMySqlRow[nCol] != NULL)
{
unsigned long *FieldLength = mysql_fetch_lengths(m_pMySqlResult);
nDataLen = (int)FieldLength[nCol];
pDataOut = (char*)(m_ItemMySqlRow[nCol]);
return true;
}
else
{
return false;
}
}
像通常一样查询后,得到结果集,然后得到第nCol列结果,返回二进制指针结果和二进制长度。返回后必须立马处理或者存储一份。否则mysql将数据销毁,指针所指数据则无效了。
存二进制数据:
mysql语句接受的sql语句都是string,以'\0'结尾的。如果冒然插入二进制数据到sql语句中,要么报错,要么存储错误。此处可以通过mysql提供的函数将数据转换一下即可。
char* CMySqlAccess::ConvertBinaryToString(char* pBinaryData,int nLen)
{
static char s_BinaryData[10240];
mysql_real_escape_string(m_pMySqlConn,s_BinaryData,pBinaryData,nLen);
return s_BinaryData;
}
上面这个函数只能单线程使用啊,将一块二进制数据转换为mysql可识别的string数据。这样就直接可以通过mysql的sql语句insert,update来对blob数据进行更新和插入了,sql语句用法不变。