J'ai essayé de me connecter à ma base de données (qui se trouve sur le même ordinateur que mon code) via mon code C #. Le problème est que je reçois toujours l'erreur "Échec de la connexion pour l'utilisateur" "" ... J'avoue que ma connaissance de la connexion aux bases de données est minime et j'ai essayé presque toutes les étapes des autres questions!
voici une partie de mon code:
SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["SQLServerConnection"].ConnectionString);
SqlCommand command = connection.CreateCommand();
command.CommandText = @"IF EXISTS
(
SELECT *
FROM user
WHERE EMAILADRES = @email and WACHTWOORD = @password
) SELECT CAST (1 as bit)
ELSE
SELECT CAST(0 as bit)";
command.Parameters.AddWithValue("email", email);
command.Parameters.AddWithValue("password", password);
connection.Open();
object ReturnBool = command.ExecuteScalar();
connection.Close();
et voici ma chaîne de connexion:
<add name="SQLServerConnection" connectionString="Server=localhost; Database=database1;uid=NT AUTHORITY\NETWORK SERVICE" />
vous devez changer la chaîne de connexion;
<add name="SQLServerConnection" connectionString="Server=localhost;Database=database1;Trusted_Connection=True;/>
si vous utilisez l'authentification Windows pour vous connecter à la base de données locale, vous devez définir Trusted_Connection=True
; si vous utilisez l'authentification SQL Server, vous devez déclarer User Id=myUsername; Password=myPassword;
.
Je recommanderais de faire ceci:
1) Remplacez la chaîne de connexion par:
<add name="SQLServerConnection" connectionString="Server=.;Database=database1;Trusted_Connection=True;"/>
'Serveur =.' - une instance par défaut de SQL Server sur votre machine est utilisée,
'Trusted_Connection = True' - L'authentification Windows est utilisée pour valider votre accès à l'instance SQL Server.
2) Vérifiez dans Sql Management Studio que votre utilisateur Windows est autorisé à accéder à "database1".
La deuxième erreur que vous obtenez, car vous devez ajouter "@" dans le nom du paramètre comme ceci:
command.Parameters.AddWithValue("@email", email);
command.Parameters.AddWithValue("@password", password);
Je recommanderais également de changer votre code comme ceci:
using (var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["SQLServerConnection"].ConnectionString))
{
using (var command = connection.CreateCommand())
{
command.CommandText = @"IF EXISTS
(
SELECT *
FROM user
WHERE EMAILADRES = @email and WACHTWOORD = @password
) SELECT CAST (1 as bit)
ELSE
SELECT CAST(0 as bit)";
command.Parameters.AddWithValue("@email", email);
command.Parameters.AddWithValue("@password", password);
connection.Open();
var result = command.ExecuteScalar();
}
}
Modifiez votre chaîne de connexion.
<add name="SQLServerConnection" connectionString="Server=.;Database=database1;Trusted_Connection=True;"/>
Si vous utilisez l'authentification serveur,
<add name="SQLServerConnection" connectionString="Server=.;Database=database1; UserId = Username; Password = Password;"/>
Si vous avez encore une erreur,
Vérifiez vos services et protocoles SQL dans le gestionnaire de configuration du serveur SQL.
Essayez comme ci-dessous ... cela vous aidera ..
string email ="[email protected]" //Give your email id to check
string password ="Test" //Give your Password to check
SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["SQLServerConnection"].ConnectionString);
SqlCommand command = connection.CreateCommand();
command.CommandText = "SELECT * FROM user WHERE EMAILADRES = @email and WACHTWOORD = @password"
command.Parameters.AddWithValue("@email", email);
command.Parameters.AddWithValue("@password", password);
connection.Open();
SqlDataReader dr = command.ExecuteReader();
if (dr.Read())
MessageBox.Show("Exists");
else
MessageBox.Show("Not Exists");
connection.Close();