如何使用 C# 在 MYSQL 中插入和检索图像

Posted

技术标签:

【中文标题】如何使用 C# 在 MYSQL 中插入和检索图像【英文标题】:How to insert and retrieve images in MYSQL using C# 【发布时间】:2015-05-14 14:54:51 【问题描述】:

有没有办法使用 phpMyAdmin 和 XAMPP 在 mysql 数据库中插入和检索图像(图片本身)?我正在使用 C#。

private void button1_Click(object sender, EventArgs e)

    //this button will save my pic from the picturebox to the database
    String strAddress = " Data Source = 127.0.0.1; Initial Catalog= ex; user id = root; password= ''";
    MySqlConnection sqlConn = new MySqlConnection(strAddress);
    MySqlCommand sqlcomm = new MySqlCommand();

    sqlConn.Open();
    sqlcomm.CommandText = "INSERT INTO ta VALUES(" + pictureBox1.Image  + "')";
    sqlcomm.CommandType = CommandType.Text;
    sqlcomm.Connection = sqlConn;
    sqlcomm.ExecuteNonQuery();
    sqlConn.Close();
    MessageBox.Show("RECORD SAVED!", "SAVING", MessageBoxButtons.OK, MessageBoxIcon.Information);


private void button2_Click(object sender, EventArgs e)

    //this will put an image in the picturebox 
    OpenFileDialog dlg = new OpenFileDialog();
    dlg.Title = "Open Image";
    //dlg.Filter = "bmp files (*.bmp)|*.bmp";
    if (dlg.ShowDialog() == DialogResult.OK)
    
        pictureBox1.Image = System.Drawing.Image.FromFile(dlg.FileName);
    
    dlg.Dispose();

【问题讨论】:

这是一个相当宽泛的问题,你有没有尝试过任何事情,在谷歌上搜索过答案? Stack Overflow 是针对特定问题的,而不是如何编写整个应用程序。 ***.com/help/dont-ask 欢迎来到 Stack Overflow。我们可以回答您在编程时遇到的具体问题。您应该使用您的代码的 Minimally-Complete-Verifiable-Example 向我们展示您尝试过的内容以及问题所在。 @GreenChili 说了什么。此外,您正在寻找的概念是 BLOB——二进制大对象。 为什么还要在 MYSQL 中存储图像? 我尝试搜索代码或最接近的代码,但失败了。顺便说一句,这不是我的整个应用程序,只是其中的一部分。我试图在这里发布它,因为我找不到任何答案。 【参考方案1】:

您可以将实际图像存储在数据库中,但这确实是不可取的。

将图像存储在目录中,并在数据库中存储对图像的引用(例如图像的路径)。

图像可能非常大,并且会占用数据库中不必要的空间。

【讨论】:

我知道这个方法,但是我们的教授说使用数据库来存储图片:/ 这不能回答 OP 的问题。【参考方案2】:

我认为将图像存储在数据库中并不是一个好主意。但是,如果这是您的要求,那么您可以执行类似的操作

using (MySqlConnection conn = new MySqlConnection("Your Connection String"))

 string myQuery = "SELECT IMAGE FROM SOMETABLE";

    using(MySqlCommand cmd = new MySqlCommand(myQuery, conn))
    
       conn.Open();
       using(var reader = new cmd.ExecuteReader())
       
         someVariable = (byte[])reader["IMAGE"];
       
    

这是假设您的数据库中有一个数据类型为BLOB 的列。您还需要安装Install-Package MySql.Data

【讨论】:

感谢您的回答。我会试试看。 :) 告诉我们您的进展情况 菜鸟问题,为什么你的方法和我的不一样? 你关心哪一部分? 在我上面的代码中,我使用了 String strAddress = " Data Source = 127.0.0.1; Initial Catalog= ex; user id = root; password= ''"; MySqlConnection sqlConn = new MySqlConnection(strAddress); MySqlCommand sqlcomm = new MySqlCommand(); sqlConn.Open(); sqlcomm.CommandText = "INSERT INTO TA VALUES(" + pictureBox1.Image + "')"; sqlcomm.CommandType = CommandType.Text; sqlcomm.Connection = sqlConn; sqlcomm.ExecuteNonQuery(); sqlConn.Close();

以上是关于如何使用 C# 在 MYSQL 中插入和检索图像的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PHP 从 MySQL 数据库中存储和检索图像?

如何从 MySQL 数据库中存储和检索图像并使用 Php 将其显示在 html 中? [复制]

从mysql中检索图像并设置为pictureBox C#

Android:无法从mysql数据库中检索图像URL并将其显示在imageView中

如何在 C# 中从 MySQL 中检索 tinyint 的数据类型?

在 Windows 窗体中检索数据库和图像