2016-01-25 4 views
0

Я использую базу данных SQLite в своем приложении. По какой-то причине запрос:SQLite update query работает в консоли, а не в .Net

UPDATE USERS SET PASSWORD = 'test' WHERE USERNAME = 'Admin' 

работы в консоли (обновляет поле ПАРОЛЬ), но когда я запускаю его с помощью кода:

Dim exec As String = "UPDATE USERS SET PASSWORD = '" & password & "' WHERE USERNAME = '" & username & "'" 
Dim returnCode As [Boolean] = True 
Try 
    ExecuteNonQuery(exec) 
Catch 
    returnCode = False 
End Try 
Return returnCode 

Функция всегда возвращает ложь, и база данных не обновляется , Вот метод ExecuteNonQuery:

Public Shared Function ExecuteNonQuery(sql As String) As Integer 
    Dim cnn As New SQLiteConnection(dbConnection) 
    cnn.Open() 
    Dim mycommand As New SQLiteCommand(cnn) 
    mycommand.CommandText = sql 
    Dim rowsUpdated As Integer = mycommand.ExecuteNonQuery() 
    cnn.Close() 
    Return rowsUpdated 
End Function 

Что я здесь делаю неправильно? Мой код для создания новой строки отлично работает, но обновления нет.

Да, я знаю, что это небезопасно, изначально у меня было больше проверок безопасности, но мне нужно хотя бы заставить его работать, прежде чем это делать.

+0

Мое первое предположение, что вы подключены/подключены к неправильной базе данных. –

+0

Это не может быть так, так как мои другие методы для добавления новых строк работают нормально. – TheRyan722

+0

Dont concat SQL; используйте параметры SQL - попробуйте имя пользователя 'D'Angelo Barksdale' и не храните пароли в виде открытого текста. Также Пароль является зарезервированным словом и должен быть экранирован – Plutonix

ответ

0

По какой-то причине sqlite3.dll не попал в папку вывода вместе с приложением, что вызвало странное поведение и, в конечном счете, для отказа запроса.

Когда я разместил копию dll в выходной папке, все сработало нормально.

Смежные вопросы