gpt4 book ai didi

c# - 使用/在 mysql 中更新列

转载 作者:行者123 更新时间:2023-11-30 21:52:00 27 4
gpt4 key购买 nike

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

\\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 但它不会反射(reflect),因为在 C# 应用程序和 mysql 之间,所有\\转换为\。

你介意告诉我如何解决我的问题吗?

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

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

最佳答案

为了尽量保持简单,我认为您遇到的问题是您实际上同时需要“@”和转义值。尝试这样的事情。它对我有用。我对数据结构做了一些假设,并在 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);
}
}

}
}
}

关于c# - 使用/在 mysql 中更新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46814865/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com