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;/>

如果您使用 windows 身份验证连接到本地数据库,则需要设置Trusted_Connection=True;如果您使用 SQL Server 身份验证,则需要声明User Id=myUsername; Password=myPassword;.

于 2013-01-28T17:46:05.473 回答
9

我建议这样做:

1)将连接字符串更改为:

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

'服务器=。' - 使用您机器上的默认 SQL Server 实例,

'Trusted_Connection=True' - Windows 身份验证用于验证您对 SQL Server 实例的访问。

2) 在 Sql Management Studio 中检查您的 Windows 用户是否有权访问“database1”。

您遇到的第二个错误是因为您应该在参数名称中添加“@”,如下所示:

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 回答