【问题标题】:Using generic settings to for connecting to mysql and ms sql in same app?在同一个应用程序中使用通用设置连接到 mysql 和 ms sql?
【发布时间】:2016-02-29 16:13:55
【问题描述】:

我正在将一个 delphi 应用程序(使用 mysql)转换为一个 c# 应用程序,要求能够连接到 MySQL 和 MS SQL 数据库。

连接字符串中的以下字段将由用户通过文本框手动设置:

Server, Port, DataBase, UserID, Password

然后我将它们分配给连接字符串:

connString = String.Format("Server={0}; Port={1}; DataBase={2}; Uid={3}; Pwd={4};", hostname, port, database, user, password);

但是,MySQL 和 MS SQL 字符串是不同的。我可以有一个选项,让用户根据他们连接到的数据库在两个不同的字符串之间切换,但是有没有一些通用的方法可以在不使用不同的连接字符串和SQLConnection vs MySQLConnection 的情况下在两者之间切换?

【问题讨论】:

  • 怎么样:connString = flagMySql ? String.Format("MYSQLCONNSTRING", values) : String.Format("MSSQLCONNSTRING", values);?
  • 嗯,我不是还需要两个连接字符串吗?
  • 可能,是的。不知道能不能把MySql的conn字符串和MsSql的conn字符串结合起来。
  • <add name="DbMySqlConn" connectionString=" Data Source=MYSQLDataSrc;User Id={0};Password={1};" /> <add name="DbSqlConn2" connectionString=" Data Source=SQLServerDataSrc;User Id={0};Password={1};" /> 您可以添加类似这样的内容,具体取决于在 UI 中选择了哪个复选框项,让他们为他们的透视服务器帐户输入用户名和密码我目前使用 Oracle 和 Sql Server 执行此操作并且可以工作就像一个魅力..您将需要 2 个连接字符串 不允许用户输入连接字符串太多错误的机会
  • @pfinferno 如果这就是您的意思,您将需要两个连接字符串模板。也许您可以将SqlConnectionStringBuilder 用作DbConnectionStringBuilder 和MySQL 的等价物(如果有的话)。

标签: c# mysql sql-server


【解决方案1】:

MSSQL 和 MySQL 的连接字符串不能“合并”和参数化以同时在两个 dbms 上工作。遗憾的是,两者都有一些没有任何重叠别名的关键字(例如用户 ID)。

比较:https://www.connectionstrings.com/mysql/https://www.connectionstrings.com/sql-server/

您应该考虑将模板存储在某处(例如在您的配置中)并使用读取模板并插入参数的简单函数来构建连接字符串。 (正如你基本上已经提到的)

 <appSettings>  
     <add key="MySQL" value="server={0};port={1};database={2};uid={3};password={4}"/>
     <add key="MSSQL" value="data source={0}:{1};initial catalog={2};User Id={3};Password={4}; />
 </appSettings>

public string GetConString(string dbms, string server, int port, string database, string user, string password
{
    return String.Format(ConfigurationManager.AppSettings[dbms], server, port, database, user, password;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-14
    • 1970-01-01
    • 2019-09-08
    • 2021-10-09
    • 2017-08-04
    • 1970-01-01
    相关资源
    最近更新 更多