mysql - 在 visual studio 中使用 MySQL 并在运行时更改连接

标签 mysql .net visual-studio-2010 odbc

我在我的应用程序中使用了类似的东西

MySqlConnection cnn = new MySqlConnection("Server=myServerAddress;" + 
                                          "Database=myDataBase;" + 
                                          "Uid=myUsername;" + 
                                          "Pwd=myPassword;");

这每次都会改变,因为我们使用我们的应用程序部署数据库。 它工作正常。我输入 using(new connection(cnn)){ query... } 然后继续。 我已经使用在 Windows ODBC 数据源管理员中定义的连接来处理数据集。 但我很好奇,有没有办法使用我的本地测试数据库使用 visual studio 的数据集项,然后在运行时更改数据集的连接?更好的是,我可以使用 c# 在运行时以编程方式添加 ODBC 数据源吗?

最佳答案

通常,连接字符串是从应用程序同一文件夹中的应用程序 exe.config 文件加载的。可以使用项目属性中的“设置”选项卡定义此连接字符串。

  • 右键单击项目的属性
  • 选择“设置”选项卡(如果您没有,请确认创建 设置)
  • 单击列类型中的组合框并选择连接字符串
  • 为您的连接命名
  • 在“值”列中键入连接字符串(示例位于 connectionstrings.com )

现在在你的项目文件中,你应该有文件 app.config(变成你的 app.exe.config),其中有一个像这样的部分

<configuration>
  <connectionStrings>
    <add name="MyAppConnection"
      connectionString="Server=myServerAddress;Database=myDB;Uid=user;Pwd=pass;" />
  </connectionStrings>
</configuration 

此时你在程序中读取它使用

  string conString = ConfigurationManager
                        .ConnectionStrings["MyAppConnection"]
                        .ConnectionString;

相反,如果您想在运行时(根据用户输入、您自己的配置文件等)自行构建连接字符串,那么您可以利用 MySqlConnectionStringBuilder 类的功能

MySqlConnectionStringBuilder msb = new MySqlConnectionStringBuilder();
msb.Server = "localhost";
msb.Port = 3306;
msb.UserID = "root";
msb.Password = "xxx";
msb.Database = "test";
MySqlConnection cnn = new MySqlConnection(msb.ConnectionString);
cnn.Open();

当然,这些文字值可以用您自己的变量代替。 此类的文档出奇地难以找到。最好的文档是 Sql Server equivalent 之一.有趣的是,您可以从配置文件中读取静态连接字符串,然后仅更改所需的属性。

string conString = ConfigurationManager
                  .ConnectionStrings["MyAppConnection"]
                  .ConnectionString;
MySqlConnectionStringBuilder msb = new MySqlConnectionStringBuilder(conString);
msb.Database = "AnotherDB";
MySqlConnection cnn = new MySqlConnection(msb.ConnectionString);

关于mysql - 在 visual studio 中使用 MySQL 并在运行时更改连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24149645/

相关文章:

php - 将 sql 查询转换为 Fluentpdo 查询

MySQL 5.6.20 alter ignore table 错误

c++ - 将矩阵类转换为 IplImage*

visual-studio-2010 - Visual Studio 源代码管理正在恢复已撤消的挂起更改?

.net - 正则表达式返回最后十三位数字的前十二位?

c++ - Thrust 库 - 如何编写包装器?

php - 在其他两列为零的列中查找最小值

php - 我可以在准备好的语句中参数化表名吗?

.net - .NET 的 AWGN 生成器

.net - 如何自动生成体育联赛赛程