Android SQLite вставляет несколько записей

В моей деятельности у меня есть 2 средства выбора даты, с помощью которых я выбираю дату начала (например, 01.01.2014) и дату окончания (например, 01.12.2014). тогда я должен вставить 12 записей одновременно с их датами, то есть в моем поле даты будут следующие строки:

01/01/2014
01/02/2014
01/03/2014 
01/04/2014 
01/05/2014
01/06/2014
01/07/2014 
01/08/2014
01/09/2014
01/10/2014
01/11/2014 
01/12/2014 

до сих пор мне удавалось только рассчитать разницу между датой начала и датой окончания, но я точно не знаю, как собрать все эти записи вместе. Спасибо за вашу помощь.

мой код для расчета разницы между датами (JodaTime)

public void diff_date(View v){
    SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd" );
    String date_in = sdf.format( dateAndTime.getTime() );
    String date_out = sdf.format( dateAndTime1.getTime() );
     int differenza_date = Days.daysBetween(new DateTime(date_in), new DateTime(date_out)).getDays(); 

person user3160725    schedule 24.01.2014    source источник
comment
В Android вы должны использовать SQLiteDatabase.insert с правильными значениями ContentValues ​​​​и повторять это все время, которое вам нужно.   -  person LS_ᴅᴇᴠ    schedule 25.01.2014


Ответы (1)


Как и в SQL, вы можете вставить больше, чем строку, вы можете сделать свою строку такой

INSERT INTO 'tablename' ('column1') VALUES
('val1'),
('val2'),
('val2'),
('val2');

и здесь реализация кода вставки:

public void diff_date(View v){
    SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd" );
    String insertRows = "INSERT INTO 'tablename' ('column1') VALUES";
     String date_in = sdf.format( dateAndTime .getTime() );
     String date_out = sdf.format( dateAndTime1.getTime() );
     int differenza_date = Days.daysBetween(new DateTime(date_in), new DateTime(date_out)).getDays();
     for(int i=1 ; i < differenza_date ; i++)
     {
         // increase i day each time and save it in string 
         insertRows += "("+increasedDate+"),"
     }

     // and here insert into database 
     db.execSQL(insertRows)
     }
person mohammed momn    schedule 24.01.2014
comment
да, но он должен быть динамическим, то есть у пользователя будет полная свобода выбора даты начала и даты окончания. В моем вопросе 1 год, но пользователь может выбрать 2 года, 3 года или 6 месяцев и так далее. - person user3160725; 25.01.2014
comment
взгляните на отредактированный ответ, я пытаюсь сделать какой-то фиктивный код, потому что у меня нет вашего полного кода, поэтому не стесняйтесь, если какая-либо строка кода не очевидна для вас. - person mohammed momn; 25.01.2014
comment
К вашему сведению, этот синтаксис был представлен в sqlite 3.7.11, и многие устройства Android поставляются с более старыми версиями библиотеки, что приводит к синтаксическим ошибкам при попытке запуска подобного SQL. Безопаснее вставлять только одну строку за раз. - person laalto; 25.01.2014