C # - есть синтаксическая ошибка в предложении UPDATE WHERE - PullRequest
0 голосов
/ 27 ноября 2018
public static bool ChangePassword(string username, string password)
{
    string sql = "UPDATE Users SET Password = @Password WHERE UserName = @Username";
    OleDbCommand cmd = new OleDbCommand(sql, connect);
    cmd.Parameters.AddWithValue("@Password", hashPassword(password));
    cmd.Parameters.AddWithValue("@Username", username);

    connect.Open();

    int rows = cmd.ExecuteNonQuery();

    if (rows > 0)
        return true;

    return false;
}

Строка подключения определяется как атрибут класса.Кроме того, я использовал этот вид для установки параметров в других функциях, и они отлично работают, я не знаю, в чем здесь проблема.Я получаю синтаксическую ошибку для этого оператора SQL, я не знаю, что с ним не так.

Edit

Это одна из функций, которая работает, этоэто INSERT SQL заявление, но код похож.Надеюсь, это поможет вам, выяснить, в чем проблема с этим обновлением ..

public static bool CreateUser(string username, string password)
{
    OleDbCommand cmd = new OleDbCommand("INSERT INTO Users VALUES(@Username, @Password)", connect);
    cmd.Parameters.AddWithValue("@Username", username);
    cmd.Parameters.AddWithValue("@Password", hashPassword(password)); 

    connect.Open();

    int rows = cmd.ExecuteNonQuery();

    if (rows > 0) return true;
    else return false;
}

1 Ответ

0 голосов
/ 27 ноября 2018

Вы, вероятно, хотите это

cmd.Parameters.Add("@Password", SqlDbType.VarChar).Value =  hashPassword(password);
cmd.Parameters.Add("@Username", SqlDbType.VarChar).Value =  username;

Но мы не знаем.Какие типы двух полей.Мы не можем действительно ответить на вопрос, не зная об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...