首页 > 解决方案 > 如何将 ImagePath 存储在 Mysql 数据库中?

问题描述

我正在尝试将图像路径存储在我的 mysql 数据库中,但它不存储反斜杠(/)。

这是我的道路 -string str = @"C:\Users\user\Downloads\99 Most Amazing Collection of Computer Desktop Wallpapers - 5522 [ECLiPSE]"

这是它在 mysql 中的显示方式 - C:UsersuserDownloads99 最神奇的电脑桌面壁纸合集 - 5522 [ECLiPSE]

因此,我无法检索图像,那么如何存储包含反斜杠的图像路径。

mysql代码

      string sqlstring = "server=; port= ; user id =;Password=;Database=;";

   string str = @"C:\Users\user\Downloads\99 Most Amazing Collection of 
       Computer Desktop Wallpapers - 5522 [ECLiPSE]"
            MySqlConnection conn = new MySqlConnection(sqlstring);
            try
            {
                conn.Open();
            }
            catch (MySqlException ex)
            {
                throw ex;
            }
            string Query = "INSERT INTO test.blogimagestable (ImagesId)values('" + str + "');";
            MySqlCommand cmd = new MySqlCommand(Query, conn);
            cmd.ExecuteReader();
            conn.Close();

标签: c#mysql

解决方案


您应该使用参数化查询来防止此类问题自动发生。还有其他讨厌的事情,比如 SQL 注入。

你应该调用ExecuteNonQuery()而不是ExecuteReader()for 一个不返回结果的语句。或者至少注意调用Dispose()无用的阅读器或使用using. (其他一次性物品也是如此。)

...
string Query = "INSERT INTO test.blogimagestable (ImagesId)values(?str);";
MySqlCommand cmd = new MySqlCommand(Query, conn)
cmd.Parameters.Add("?str", MySqlDbType.VarString, 256).Value = str;
cmd.ExecuteNonQuery();
...

根据列的类型更改传递给的类型和长度Parameters.Add()


推荐阅读