System.Data.SqlClient.SqlException的奇怪情况

时间:2013-05-11 15:31:06

标签: c# sql-server

您好我正在尝试使用C#连接数据库,但一直给我这个代码:

SqlConnection connection = new SqlConnection("Data Source=FAVAI_LAB_01\\SQLSERVER;Initial Catalog=DBServicios;Integrated Security=True");

try
{
   connection.Open();

   SqlCommand myCommand = new SqlCommand("select ID_USUARIO from TUSUARIO" +
                                         "WHERE NOMBRE_USUARIO=@Param1 AND PASS=@Param2", connection);
   myCommand.Parameters.AddWithValue("@Param1", username);
   myCommand.Parameters.AddWithValue("@Param1", password);

   string CurrentName = (string)myCommand.ExecuteScalar();

   if (CurrentName != null)
   {
      connection.Close();
      Console.WriteLine("true");
   }
   else
   {
      connection.Close();
      Console.WriteLine("falsfgdge");
   }
}
catch (System.Data.SqlClient.SqlException e)
{
    Console.WriteLine(e.ToString());
}

这是错误:

System.Data.SqlClient.SqlException (0x80131904):
 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)
 at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() at System.Data.SqlClient.TdsParser.
 Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, 
 Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity) at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, 
 Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, SqlConnection owningObject) at 
 System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword,
 Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, TimeoutTimer timeout) at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, TimeoutTimer timeout, 
 SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance) at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, 
 Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, 
 DbConnection owningConnection) at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, 
 DbConnectionPool pool, DbConnectionOptions options) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject) at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject) 
 at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) 
 at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, 
 DbConnectionFactory connectionFactory) at System.Data.SqlClient.SqlConnection.Open() 
 at Webserver.Login.getAccess(String username, String password) in path\Login.cs:line 18

2 个答案:

答案 0 :(得分:2)

TUSUARIO和WHERE之间缺少一个空格,添加一个

 SqlCommand myCommand = new SqlCommand("select ID_USUARIO from TUSUARIO " +
                            "WHERE NOMBRE_USUARIO=@Param1 AND PASS=@Param2", connection);

答案 1 :(得分:2)

您正在选择ID_USUARIO但是然后将其转换为字符串。最有可能的是,如果一个列被称为ID_something,它的类型不是字符串类型。