Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过服务器从MySQL数据库检索图像_C#_Mysql_Winforms - Fatal编程技术网

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的图像。我想开销真的很小