0

好的,这是我的一段代码

MySqlConnection conn = new MySqlConnection("Userid=root;pwd=root;port=3306;host=localhost;database=test");
conn.Open();

由于我正在使用的新版本的 devart 连接器存在一些问题,我必须在代码中的OldCompatibility.BinaryAsString = true; 任何地方添加一行代码,如下所示

OldCompatibility.BinaryAsString = true;
MySqlConnection conn = new MySqlConnectio("User id=root;pwd=root;port=3306;host=localhost;database=test");
conn.Open();

但问题是我必须在我的应用程序中进行此更改,其中有许多页面包含这段代码。所以有什么方法可以全局执行此操作,这样我就不必在我的应用程序中进行此更改。我正在使用 devart 连接器 6

4

5 回答 5

4

Assuming that your connection is remotely similar each time; don't. Keep all your connection logic in one shared method, and use that instead of repeating the connection code everywhere.

public static MySqlConnection Connect() {
    OldCompatibility.BinaryAsString = true;
    MySqlConnection conn = new MySqlConnection("User id=root;pwd=root;port=3306;host=localhost;database=test");
    conn.Open();

    return conn;
}
于 2012-04-17T04:29:38.177 回答
1

MySqlConnection 是您的自定义类,如果您将 OldCompatibility.BinaryAsString = true 放在 MySqlConnection 的构造函数中,那么它将起作用

于 2012-04-17T04:26:12.963 回答
0

You can use a factory method

public class FactoryMethods
{
  public static MySqlConnection GetConfiguredConnection()
  {
    OldCompatibility.BinaryAsString = true;
    MySqlConnection conn = new MySqlConnectio("User id=root;pwd=root;port=3306;host=localhost;database=test");
    conn.Open();
    return conn;
  }
}

And assuming the connection is IDispose-able

using (var myConn = FactoryMethods.GetConfiguredConnection())
{
  // Use your connection here
}
于 2012-04-17T04:31:34.597 回答
0

使用正则表达式查找和替换一次更改所有代码:

1.- 按 Ctrl+H 打开“查找和替换”窗口输入您的搜索,将换行符替换为“\n”(无引号)

2.-展开“查找选项”并选中“使用”,选择“正则表达式”(这也会激活“查找内容”框旁边的右箭头。它列出了一些命令/快捷方式)。

例如:在查找时键入:

{MySqlConnection conn = new MySqlConnection}

然后在替换上试试这个:

OldCompatibility.BinaryAsString = true;\n\t\t\1 MySqlConnection conn = new MySqlConnection

这将找到与搜索匹配的所有代码并在其前面添加一个附加行。注意占位符 {...} 被替换为 \1

于 2012-04-17T04:36:53.307 回答
0

真的应该考虑@minitech关于使用方法的建议,但如果你真的不能在任何地方更改代码,我只能看到两个选项;

  • 将 MySQLConnection 扩展为在另一个命名空间中使用相同名称的新类,只需更改构造函数以包含您的行。然后只替换using文件顶部的行。

  • 如果无法做到这一点,请以相同的方式实现包装类。

这两个选项都可能不起作用(例如,如果类是最终的,则为#1,如果类作为参数传递给任何函数,则为#2),但除非您至少可以进行全局搜索/替换或实现@minitech's建议用一种方法,我看不到任何其他方法。

于 2012-04-17T04:45:50.650 回答