我正在努力将delphi应用程序(使用mysql)转换为c#app,并且要求能够连接到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 {{1}的情况下在两者之间进行切换}?
答案 0 :(得分:0)
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;
}