заменить Statement для вставки только в определенные столбцы - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь использовать оператор замены, но только для замены данных в определенных столбцах, но используемый мной запрос заменяет значения во всех столбцах.

public boolean insertDataTable(String FileNumber, String Areas, String Level, String ProjectCode, String Year, String Department, String University, String Address, String City, String State, String Region, String UserId) {

        SQLiteDatabase sqLiteDatabase = this.getWritableDatabase();

        String query = " REPLACE INTO DataTable (FileNumber, Areas, Level, ProjectCode, Year, Department, University, Address, City, State, Region, UserId) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)";

        sqLiteDatabase.execSQL(query,new String[]{FileNumber, Areas, Level, ProjectCode, Year, Department, University, Address, City, State, Region, UserId});
        sqLiteDatabase.close();
        return true;
    }

У меня есть таблица с 13 столбцами, я пытаюсь не обновлять значение в последнем столбце. это код, который я использую.

1 Ответ

0 голосов
/ 10 апреля 2019

Я думаю, что вы неправильно поняли цель заявления REPLACE.Это не то же самое, что UPDATE.Прочтите приведенную выше ссылку, и вы увидите, что REPLACE:

вставляет новую строку или удаляет строку, конфликтующую с новой строкой, а затем добавляет новую строку.

Я считаю, что вы действительно хотите обновить строку в таблице.Сделайте это:

String query = "UPDATE DataTable SET " + 
"FileNumber = ?, Areas = ?, Level = ?, ProjectCode = ?, Year = ?, Department = ?, " +
"University = ?, Address = ?, City = ?, State = ?, Region = ?, UserId = ? " +
"WHERE ......";

Используйте предложение WHERE в конце оператора, чтобы указать, какую строку обновлять, в противном случае все строки таблицы будут обновлены.

...