C# SQL Server连接错误号:2,状态:0,类别:20
尝试连接到本地SQL server(MAMP)时,出现以下异常: 引发异常:System.Data.dll中的“System.Data.SqlClient.SqlException” System.Data.SqlClient.SqlException(0x80131904):建立到SQL Server的连接时发生与网络相关或特定于实例的错误。找不到服务器或无法访问服务器。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。(提供程序:命名管道提供程序,错误:40-无法打开到SQL Server的连接)--->System.ComponentModel.Win32Exception(0x80004005):系统找不到指定的文件 位于System.Data.SqlClient.SqlInternalConnectionDS..ctor(DbConnectionPoolIdentity、SqlConnectionString connectionOptions、SqlCredential凭证、对象提供信息、String newPassword、SecureString newSecurePassword、Boolean redirectedUserInstance、SqlConnectionString userConnectionOptions、SessionData重新连接SessionData、DbConnectionPool池、String accessToken、Boolean applyTransientFAulthandle,SqlAuthenticationProviderManager(sqlAuthProviderManager) 位于System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions、DbConnectionPoolKey、Object poolGroupProviderInfo、DbConnectionPool、DBConnectionOwningConnection、DbConnectionOptions用户选项) 位于System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool池、DbConnectionOwningObject、DbConnectionOptions选项、DbConnectionPoolKey池键、DbConnectionOptions用户选项) 位于System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection-owningObject、DbConnectionOptions-userOptions、DbConnectionInternal-oldConnection) 位于System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject、DbConnectionOptions userOptions、DbConnectionInternal oldConnection) 位于System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject、UInt32 waitForMultipleObjectsTimeout、Boolean allowCreate、Boolean OnlyOnEckConnection、DbConnectionOptions userOptions、DbConnectionInternal和connection) 位于System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject、TaskCompletionSourceC# SQL Server连接错误号:2,状态:0,类别:20,c#,sql-server,C#,Sql Server,尝试连接到本地SQL server(MAMP)时,出现以下异常: 引发异常:System.Data.dll中的“System.Data.SqlClient.SqlException” System.Data.SqlClient.SqlException(0x80131904):建立到SQL Server的连接时发生与网络相关或特定于实例的错误。找不到服务器或无法访问服务器。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。(提供程序:命名管道提供程序,错误:40-无法打开到S
1重试、DbConnectionOptions用户选项、DbConnectionInternal和connection)
位于System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection、TaskCompletionSource
1重试、DbConnectionOptions用户选项、DbConnectionInternal oldConnection、DbConnectionInternal&connection)
在System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnectionOuterConnection,DbConnectionFactory connectionFactory,TaskCompletionSource1重试,DbConnectionOptions用户选项)
位于System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection、DbConnectionFactory connectionFactory、TaskCompletionSource
1重试,DbConnectionOptions用户选项)
在System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource1重试)
在System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource
1重试)
在System.Data.SqlClient.SqlConnection.Open()处
在C:\Users******\DatabaseClass.cs中的login_页面.DatabaseClass.dbRead(字符串sqlQuery)处:第35行
客户端连接ID:00000000-0000-0000-0000-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,但没有服务侦听。因此,无法建立连接…根据错误消息,连接字符串中提供的数据库实例错误、不可访问或未配置为允许远程连接(但您使用的是localhost,因此这不是原因) MAMP似乎使用MySQL作为数据库。请参阅了解如何连接到MySQL。
我还建议对SQL注入进行研究,因为您的方法dbSignIn是此类攻击的良好目标。连接字符串中的串联背后有什么特殊原因吗?N错误是:在建立与SQL Server的连接时发生了与网络相关或特定于实例的错误。找不到或未找到服务器可访问。请验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。确认连接字符串是否正确!在web配置中定义连接字符串,如:字符串是否正确,如果我不连接,我将如何继续?您的参数很有意义,但我例如,我还试图使用System.Data.SqlClient;包含库
,然后我尝试将MAMP服务器上的端口更改为1134,现在它似乎移动并停止到下一行System.InvalidOperationException:“内部连接致命错误。错误状态:18”
System.Data.SqlClient
仅用于连接到MS SQL Server。这是一种与MySql Server完全不同的协议。必须使用正确的库。如果要连接到MySql,必须使用