c# - SQL Server 连接错误号:2,状态:0,类:20
问题描述
当尝试连接到本地 SQL 服务器 (MAMP) 时,我遇到了这个异常:
抛出异常:System.Data.dll System.Data.SqlClient.SqlException (0x80131904) 中的“System.Data.SqlClient.SqlException”:建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供者:命名管道提供者,错误:40 - 无法打开与 SQL Server 的连接)---> System.ComponentModel.Win32Exception (0x80004005):系统找不到在 System.Data.SqlClient.SqlInternalConnectionTds 指定的文件。 ctor(DbConnectionPoolIdentity 身份,SqlConnectionString 连接选项,SqlCredential 凭据,对象 providerInfo,字符串 newPassword,SecureString newSecurePassword,布尔重定向用户实例,
1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource
1 retry, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource
System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection externalConnection, DbConnectionFactory connectionFactory, TaskCompletionSource 1次重试, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& 连接) 在 System.Data.SqlClient.SqlConnection.TryOpenInner (TaskCompletionSource1 retry) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource
1 次重试) ) 在 C:\Users******\DatabaseClass.cs:line 35 ClientConnectionId:00000000-0000-0000-0000 中 login_page.DatabaseClass.dbRead(String sqlQuery) 的 System.Data.SqlClient.SqlConnection.Open() -000000000000 错误号:2,状态:0,类:20
这是我用来执行SELECT
SQL 函数的类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace login_page
{
class DatabaseClass
{
public void dbSignIn(String username, String password)
{
dbRead("SELECT * FROM user_credentials WHERE username = '" + username + "' AND password = '" + password + "'");
}
public void dbRegisterUser()
{
dbRead("SQL READ TO DATABASE");
//dbWrite("SQL WRITE TO DATABASE")
}
private void dbRead(String sqlQuery)
{
SqlDataReader dataReader;
SqlCommand command;
// *** CONNECT TO DATABASE
Console.WriteLine("** Database Connection: Connecting to database");
SqlConnection dbConnection = new SqlConnection("User Id=root;" + "Password=root;" + "Server=localhost;" + "Trusted_Connection=true;" + "Database=dbmentum;" + "Connection Timeout=10;");
try
{
dbConnection.Open();
Console.WriteLine("** Database Connection: Connected to database server");
// *** READ FROM DATABASE
command = new SqlCommand(sqlQuery, dbConnection);
dataReader = command.ExecuteReader();
while (dataReader.Read())
{
Console.WriteLine(dataReader[0].ToString());
Console.WriteLine(dataReader[1].ToString());
}
dataReader.Close();
command.Dispose();
dbConnection.Close();
}
catch (SqlException e)
{
Console.WriteLine(e.ToString());
MessageBox.Show(e.Message, "Mentum - Database Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
/*
// CLOSE DATABASE
try
{
dbConnection.Close();
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
} */
}
}
}
所有适当的端口均已启用,并且数据库详细信息正确。
解决方案
您提到了MAMP,在我的理解中是MySql 服务器。尽管如此,您正在使用SqlConnection
并且SqlCommand
用于连接到MS SQL Server。对于 MySql,您需要一个MySqlConnection
,MySqlCommand
依此类推。
正如 Prashant Pimpale 指出的那样,您观察到的错误与网络连接有关。如果是这种情况,您使用 MS SQL Server 客户端连接到 MySQL 数据库,原因很明显。MSSQL默认端口是1433,MySQL默认端口是3306。所以客户端会尝试连接1433端口,但是没有服务监听。因此,无法建立连接...
推荐阅读
- java - 从哈希图中,如何将不同的值替换为输入句子中出现的每个“键”?
- javascript - bootstrap vue 模态黑色背景
- sql-server - SQL Server 查找索引定义
- swift - 尝试从手册编译 Swift 代码时出现错误:“类型不符合协议‘Comparable’”
- python - 字典到数据框?
- python - Keras load_model 函数的问题
- javascript - 将数组从 android 发布到 Google 应用程序脚本
- localdb - 尝试为文件 [...] 附加自动命名的数据库失败。存在同名数据库 [...]
- c# - 如何在半径上设置随机位置?
- sql-server - 带有 XML PATH 的 T-SQL 查询产生重复的父节点