c# - 通过C#将创建过程命令上传到mysql时忽略@symbol

标签 c# mysql mysql.data

我用 C# 创建了一个程序,用于将 MySql 数据库结构和过程复制到新创建的数据库中。然后将新数据上传到它。无法上传其中包含“@”符号的程序的问题,例如:

SET @SEARCH := CONCAT( _SEARCH , '%');

我用来检索程序的代码是:

cmd = new MySqlCommand("SELECT CONCAT( 'CREATE PROCEDURE ', ISR.ROUTINE_NAME, '(', CASE WHEN ISP.PARAMETER_NAME IS NOT NULL THEN GROUP_CONCAT(CONCAT(ISP.PARAMETER_MODE, ' ', ISP.PARAMETER_NAME, ' ', ISP.DTD_IDENTIFIER)) ELSE '' END, ')\n', ISR.ROUTINE_DEFINITION) AS Create_Procedure FROM INFORMATION_SCHEMA.ROUTINES ISR LEFT JOIN INFORMATION_SCHEMA.PARAMETERS ISP ON ISR.ROUTINE_SCHEMA = ISP.SPECIFIC_SCHEMA AND ISR.ROUTINE_NAME = ISP.SPECIFIC_NAME AND ISR.ROUTINE_TYPE = ISP.ROUTINE_TYPE WHERE ROUTINE_SCHEMA = '" + Program.RemoteSource + "' GROUP BY ISR.ROUTINE_NAME;", remote);
using (MySqlDataReader dataReader = cmd.ExecuteReader())
    {
      while (dataReader.Read())
           {
             createProcedures.Add(dataReader.GetString(0));
           }
    };

下面将新的创建过程语句上传到新数据库:

counter = 0;
foreach (string procedure in createProcedures)
   {
     try
        {
            cmd = new MySqlCommand(@procedure, remote);
            cmd.ExecuteNonQuery();
            counter++;
            Console.Write("\rProcedures Created: " + counter + " of " + createProcedures.Count);
         }
     catch (MySqlException ex)
         {
             Console.WriteLine("Error: {0}", ex.ToString());
         }
    }

和错误:

Error: MySql.Data.MySqlClient.MySqlException (0x800040005): 
Fatal error encountered during command execution.  ---> 
MySql.Data.MySqlClient.MySqlException (0x800040005): 
   Parameter '@SEARCH' must be defined.

我该怎么做才能让 MySql.Data 忽略 @ 符号?

最佳答案

我通过在连接字符串中添加 ;Allow User Variables=True 找到了答案。

Is it possible to use a MySql User Defined Variable in a .NET MySqlCommand?

关于c# - 通过C#将创建过程命令上传到mysql时忽略@symbol,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22846099/

相关文章:

c# - MySQL : 6. 6.5.0 版本的 MySql.Data 无法加载

c# - 比较两个 List<String> 以提取公共(public)项目并将其放入 List

c# - RSA解密公式的问题

c# - List <T> 仅当它是所有元素中的最小值时才添加值

php - 无法显示 SQL 查询结果

Mysql查询获取特定月份生日的所有用户

sql - 如何计算 SQL 联合中的不同值?

c# - 左侧带有垂直滚动条的文本框

c# - MySql.Data.MySqlClient.MySqlException : “The host localhost does not support SSL connections.”

mysql.data 在我的 Entity Framework 项目中发生冲突