C#コードを使用してデータベース(コードと同じコンピューター上にある)に接続しようとしています。問題は、「ユーザーのログインに失敗しました」というエラーが発生し続けることです...データベースへの接続に関する私の知識は最小限であり、他の質問のほとんどすべての手順を試しました!
これが私のコードの一部です:
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();
これは私の接続文字列です:
<add name="SQLServerConnection" connectionString="Server=localhost; Database=database1;uid=NT AUTHORITY\NETWORK SERVICE" />
接続文字列を変更する必要があります。
<add name="SQLServerConnection" connectionString="Server=localhost;Database=database1;Trusted_Connection=True;/>
windows認証を使用してローカルDBに接続している場合は、Trusted_Connection=True
を設定する必要があります。 SQLサーバー認証を使用している場合は、User Id=myUsername; Password=myPassword;
を宣言する必要があります。
私はこれを行うことをお勧めします:
1)接続文字列を次のように変更します。
<add name="SQLServerConnection" connectionString="Server=.;Database=database1;Trusted_Connection=True;"/>
「サーバー=」 -マシン上のSQL Serverのデフォルトインスタンスが使用されます。
'Trusted_Connection = True'-SQL Serverインスタンスへのアクセスを検証するためにWindows認証が使用されます。
2)Sql Management Studioで確認します。Windowsユーザーが 'database1'にアクセスする権限を持っています。
次のようなパラメーターの名前に「@」を追加する必要があるため、2番目に発生するエラー:
command.Parameters.AddWithValue("@email", email);
command.Parameters.AddWithValue("@password", password);
また、次のようにコードを変更することをお勧めします。
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();
}
}
接続文字列を変更します。
<add name="SQLServerConnection" connectionString="Server=.;Database=database1;Trusted_Connection=True;"/>
サーバー認証を使用する場合、
<add name="SQLServerConnection" connectionString="Server=.;Database=database1; UserId = Username; Password = Password;"/>
それでもエラーがある場合は、
SQLサーバー構成マネージャーでSQLサービスとプロトコルを確認してください。
以下のようにしてみてください...それはあなたを助けるでしょう。
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();