无法使用 connectionString 连接到 MySQL 服务器
Posted
技术标签:
【中文标题】无法使用 connectionString 连接到 MySQL 服务器【英文标题】:Cannot connect to MySQL server using connectionString 【发布时间】:2020-03-09 08:45:07 【问题描述】:我可能错过了一些愚蠢的东西......但我整天都在试图弄清楚,所以我放弃了。 谁能发现错误?
App.config
<connectionStrings>
<add name="linkednDb" connectionString="Server=.;Database=linkedin.usernames;Uid=root;Pwd=1234;" providerName="System.Data.SqlClient"/>
查询方法:
public void AddUser(string username)
using (IDbConnection connection = new System.Data.SqlClient.SqlConnection(Helper.Connection("linkednDb")))
connection.Query<User>($"INSERT INTO usernames (UserName) VALUES ('username')");
Console.WriteLine("adding" + username);
助手类:
public static class Helper
public static string Connection(string name)
return ConfigurationManager.ConnectionStrings[name].ConnectionString;
忘记添加错误!
System.Data.SqlClient.SqlException: 'A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)'
【问题讨论】:
错误信息是什么 您是否收到错误消息、意外结果或其他问题?你在使用 Dapper 吗? Dapper doesn't use string interpolation 因为这是个坏主意。For Dapper, this remains something we wouldn't add - it's not worth the safety trade-offs :)
您正在执行的不是参数化查询,而是动态生成的字符串,该字符串很容易无效
比如用户名是O'Reilly
怎么办?你会得到INSERT INTO usernames (UserName) VALUES ('O'Reilly')
和一个无效的查询错误
System.Data.SqlClient
是 SQL Server 客户端。你不能用它来连接mysql
@fubo 是的,问题标记为mysql
,而代码使用的是MySQL连接字符串。
【参考方案1】:
System.Data.SqlClient
是 Sql Server 的 ADO.Net 提供程序,它是一个完全不同于 MySql 的数据库平台。
您需要一个 MySql 提供程序。此提供程序不包含在 .Net 中,但有 a few options out there 您可以在 Visual Studio 中安装和引用。
当我在这里时,SQL 代码中的字符串替换是NOT OKAY。 SQL 查询中的字符串替换非常容易受到 SQL 注入问题的影响。这是应用程序最终被黑客入侵的主要方式之一。也可能发生恶意较小的问题。不会因为这个问题而受到 l33t 黑客的攻击。普通的老乔用户可以通过输入真实数据来破坏应用程序。您需要学习如何使用参数化查询。
【讨论】:
好的,第一个问题已经解决,现在要更改声明,谢谢!【参考方案2】:在您的配置中的 connectionString 值中,我认为它应该是“Database=linkedin”而不是“Database=linkedin.usernames”。数据库值不需要表名。
【讨论】:
以上是关于无法使用 connectionString 连接到 MySQL 服务器的主要内容,如果未能解决你的问题,请参考以下文章
无法连接到 SQL Server 2008 Express 实例
使用域用户(AD 用户)连接到没有密码的 SQL Server