使用/在mysql中更新列

时间:2017-10-18 16:23:40

标签: c# mysql

我正在尝试更新包含以下值的列:

\\localhost\db\kkk\086018\ss\DocA\1_216925.jpg

\\localhost\db\kkk\086018\dd\DocA\1_216925.jpg

使用下面的C#代码:

string str = "update my_document " +
                                "set path = replace (path,'" + fromFolder + "','" + toFolder + "')" +
                                "where doc_id in( select doc_id from patient_document where folder_id='" + id + "')";
            str.Replace("\\", "\\\\");
            Console.WriteLine(str);
            using (MySqlConnection conn = new MySqlConnection(ECModel.Instance.ConnString))
            {
                using (MySqlCommand cmd = new MySqlCommand(str, conn))
                {   
                    try
                    {
                        conn.Open();
                        cmd.ExecuteNonQuery();
                    }
}

我观察到这条路径正确地提交给mysql,但它不会反映出来自C#应用程序和mysql之间,所有\\转换为\。

你介意我建议如何解决我的问题吗?

  • 我在我的str前面也使用了@,但是这个解决方案也没有用。

**我也注意到当我用\\\\运行我的更新语句时它工作正常。

1 个答案:

答案 0 :(得分:0)

为了保持这一点,我认为你遇到的问题是你有效地需要" @"和逃避值。尝试这样的事情。它对我有用。我对数据结构做了一些假设,并在SQL Server上测试了这个,而不是MySQL,但我认为这个概念是合理的,我将代码还原为MySQL客户端。

class Program
{
    static void Main(string[] args)
    {
        Program program = new Program();
        program.updateTable("1", @"\\share\from\path", @"\\share\to\path");
        Console.ReadLine();
    }

    private void updateTable(string id, string fromFolder, string toFolder)
    {
        string str = @"update my_document " +
                    "set path = replace (path,'" + fromFolder + "','" + toFolder + "')" +
                    "where doc_id in( select doc_id from patient_document where folder_id='" + id + "')";

        str.Replace("\\", "\\\\");

        Console.WriteLine(str);

        using (MySqlConnection conn = new MySqlConnection(ECModel.Instance.ConnString))
        {
            using (MySqlCommand cmd = new MySqlCommand(str, conn))
            {
                try
                {
                    conn.Open();
                    cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }

        }
    }
}