17

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" />
4

4 に答える 4

28

接続文字列を変更する必要があります。

<add name="SQLServerConnection" connectionString="Server=localhost;Database=database1;Trusted_Connection=True;/>

ローカル DB への接続に Windows 認証を使用している場合は、設定する必要がありますTrusted_Connection=True。SQL サーバー認証を使用している場合は、宣言する必要がありますUser Id=myUsername; Password=myPassword;

于 2013-01-28T17:46:05.473 に答える
9

私はこれを行うことをお勧めします:

1)接続文字列を次のように変更します。

<add name="SQLServerConnection" connectionString="Server=.;Database=database1;Trusted_Connection=True;"/>

「サーバー=。」-マシン上のSQLServerのデフォルトインスタンスが使用されます。

'Trusted_Connection = True'-Windows認証は、SQLServerインスタンスへのアクセスを検証するために使用されます。

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();
    }
}
于 2013-01-28T17:50:37.883 に答える
3

接続文字列を変更します。

<add name="SQLServerConnection" connectionString="Server=.;Database=database1;Trusted_Connection=True;"/>

サーバー認証を利用する場合は、

<add name="SQLServerConnection" connectionString="Server=.;Database=database1; UserId = Username; Password = Password;"/>

それでもエラーになる場合は、

SQL Server 構成マネージャーで SQL サービスとプロトコルを確認してください。

于 2013-01-28T18:09:49.833 に答える
2

以下のように試してください...それはあなたを助けます..

        string email ="YourEmail@sample.com" //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();
于 2013-01-28T17:57:07.857 に答える