C# 通过服务器从MySQL数据库检索图像
我正在制作一个程序,需要从C# 通过服务器从MySQL数据库检索图像,c#,mysql,winforms,C#,Mysql,Winforms,我正在制作一个程序,需要从MySQL数据库表中获取图像的本地目录。目前,我已经在MySQL表中将要检索的图像的目录设置为C:\Users\User\Pictures\PictureName.PNG。我编写的方法能够通过Select语句从数据库中检索此数据,并使用从Select语句检索的路径将PictureBox图像设置为新的位图 我在网上找不到我想要的信息,因为大多数答案都与使用MySQL中的BLOB字段来存储图像有关,但我的问题是,我是否要将我的数据库放在服务器上,并将图片放在那里,我的方法是
MySQL
数据库表中获取图像的本地目录。目前,我已经在MySQL
表中将要检索的图像的目录设置为C:\Users\User\Pictures\PictureName.PNG
。我编写的方法能够通过Select
语句从数据库中检索此数据,并使用从Select
语句检索的路径将PictureBox
图像设置为新的位图
我在网上找不到我想要的信息,因为大多数答案都与使用MySQL
中的BLOB
字段来存储图像有关,但我的问题是,我是否要将我的数据库放在服务器上,并将图片放在那里,我的方法是否可以扩展以适应这些更改,或者我是否必须添加其他功能才能在服务器上工作
下面是我的代码:
public void setImage() {
string path = sql.RetrieveImage(SelectQuery.RetrievePicture());
PictureBox1.Image = new Bitmap(path);
}
public string RetrieveImage(Query query) {
string path = "";
// OpenDatabaseConnection() will open up a connection to the database
// through connection and if successful, will return true.
if (this.OpenDatabaseConnection()) {
// query.ToSql() returns a string format of the select statement
// required to retrieve the local image directory
using (MySqlCommand cmd = new MySqlCommand(query.ToSql(), connection)) {
MySqlDataReader dataReader = cmd.ExecuteReader();
dataReader.Read();
path = dataReader[0] + "";
dataReader.Close();
}
this.CloseDatabaseConnection();
}
return path;
}
在数据库中存储图像是个坏主意。在我看来,存储图像文件的路径是一种更好的方法 有几个链接到非常好的支持信息
但是,如果您必须这样做,那么是的,BLOB字段(或SQLServer中的VarBinary(MAX))就是这样做的。您可以将这些图像检索为
Byte[]
数据。我没有说我实际上是将实际图像存储为BLOB,只是存储在目录中。不过我会看看链接。谢谢。谢谢你让我参考这个链接,它确实给了我一个如何实现我目标的想法。@Don为什么在数据库中存储图像是个坏主意?我将在数据库中存储软件徽标,以便在更改时,所有客户端应用程序都将从database@JohnDemetriou一般来说,对图像的文件访问更快、更可靠。使用数据库时,总是需要提取数据,然后从中形成图像结构。在大多数情况下,这些机制是通过文件I/O自动实现的。元数据可能是一个问题。DB大小与图像数据快速合成。名单还在继续。。。按照我的答案中的链接问题,这导致了很多关于这个主题的讨论。是的,但是给出的是一个徽标只有一个图像,而不是整个DB的图像。我想开销真的很小