Как вставить запись SQLite с набором даты и времени к 'теперь' в приложении Android?

Во-первых, нулевой указатель возникает, потому что у вас есть поле entityManagerFactory, которое вы никогда не инициализируете, и, таким образом, оно имеет значение null, но вы вызываете entityManagerFactory.createEntityManager() (таким образом, это вызов null.createEntityManager()) при инициализации поля entityManager .

Вы могли бы попытаться поместить @Autowired аннотацию над entityManagerFactory - но я не понимаю, почему вы не проводите entityManager с помощью Autowire, предоставленной Spring, а вместо этого создаете свою собственную.

Также, похоже, у вас есть @PersistenceContext аннотация на entityManager - эта должна внедрить существующую entityManager в случае, если вы работаете внутри контейнера EJB или используете CDI для внедрения зависимостей, я думаю - но вы этого не делаете , вы используете аннотацию @Repository, пришедшую из Spring. И вы сами инициализируете поле. Эту аннотацию обязательно нужно удалить (я полагаю, что вы положили ее туда, чтобы добавить entityManager, но когда это не сработало, вы добавили код инициализации - entityManagerFactory.createEntityManager()). Или лучше - заменить на @Autowire, и вместо этого код инициализации должен быть удален.

например. просто есть

@Repository
public class CustomerInsertRepository {

@Autowired
private EntityManager entityManager;
...
107
задан Iamat8 10 January 2016 в 21:02
поделиться

4 ответа

Мне кажется, проблема в том, что вы отправляете "datetime ('now')" в виде строки, а не значения.

Моя мысль состоит в том, чтобы найти способ получить текущую дату / время и отправить его в вашу базу данных в качестве значения даты / времени, или найти способ использовать встроенный в SQLite (DATETIME ('NOW'))] параметр

Ознакомьтесь с ответами на этого вопроса SO.com - они могут привести вас в правильном направлении.

Надеюсь, это поможет!

6
ответ дан Community 24 November 2019 в 03:37
поделиться

Есть несколько вариантов, которые вы можете использовать:

  1. Вы можете попробовать использовать строку "(DATETIME ('now) ')) "вместо.
  2. Вставьте дату и время самостоятельно, то есть с помощью System.currentTimeMillis ()
  3. При создании таблицы SQLite укажите значение по умолчанию для столбца созданного_даты в качестве текущей даты.
  4. Используйте SQLiteDatabase.execSQL для непосредственной вставки.
7
ответ дан 24 November 2019 в 03:37
поделиться

Вы не можете использовать функцию datetime, используя оболочку Java "ContentValues". Либо вы можете использовать:

  • SQLiteDatabase.execSQL, чтобы вы могли ввести необработанный SQL-запрос.

     mDb.execSQL («INSERT INTO» + DATABASE_TABLE + «VALUES (null, datetime ())»);
    
  • Или возможности даты и времени в Java:

     // установить формат даты в формате sql.
    SimpleDateFormat dateFormat = new SimpleDateFormat ("гггг-мм-дд чч: мм: сс"); 
    Дата дата = новая дата ();
    ContentValues ​​initialValues ​​= new ContentValues ​​(); 
    initialValues.put ("date_created", dateFormat.format (date));
    long rowId = mDb.insert (DATABASE_TABLE, null, initialValues);
    
191
ответ дан 24 November 2019 в 03:37
поделиться

В своем коде я использую DATETIME DEFAULT CURRENT_TIMESTAMP в качестве типа и ограничения столбца.

В вашем случае определение таблицы было бы

create table notes (
  _id integer primary key autoincrement, 
  created_date date default CURRENT_DATE
)
43
ответ дан 24 November 2019 в 03:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: