Ваш код работает нормально, например, использование вашего кода привело к: -
Database Version = 1
Table Name = android_metadata Created Using = CREATE TABLE android_metadata (locale TEXT)
Table = android_metadata ColumnName = locale ColumnType = TEXT Default Value = null PRIMARY KEY SEQUENCE = 0
Table Name = student_table Created Using = CREATE TABLE student_table(ID INTEGER PRIMARY KEY AUTOINCREMENT, Name TEXT, Class TEXT, Marks INTEGER)
Table = student_table ColumnName = ID ColumnType = INTEGER Default Value = null PRIMARY KEY SEQUENCE = 1
Table = student_table ColumnName = Name ColumnType = TEXT Default Value = null PRIMARY KEY SEQUENCE = 0
Table = student_table ColumnName = Class ColumnType = TEXT Default Value = null PRIMARY KEY SEQUENCE = 0
Table = student_table ColumnName = Marks ColumnType = INTEGER Default Value = null PRIMARY KEY SEQUENCE = 0
Table Name = sqlite_sequence Created Using = CREATE TABLE sqlite_sequence(name,seq)
Так что отвечает "Невозможно создать простую базу данных"
В SQLite нет определенного типа данных для дат.На самом деле в SQLite тип не так уж важен, так как вы можете хранить любой тип значения в столбце любого типа (кроме псевдонима столбца rowid , который может быть только INTEGER).
Важно то, как вы сохраняете данные.Есть заметные преимущества в сохранении даты в распознанном формате / типе.
например, согласно: -
2.2.Дата и время Тип данных SQLite не имеет класса хранения, выделенного для хранения дат и / или времени.Вместо этого встроенные функции даты и времени в SQLite способны сохранять даты и время в виде значений TEXT, REAL или INTEGER:
TEXT в виде строк ISO8601 ("YYYY-MM-DD HH: MM: SS.SSS ").НАСТОЯЩЕЕ, как юлианские числа, число дней с полудня в Гринвиче 24 ноября 4714 г. до н.э. в соответствии с Григорианским календарем.INTEGER как Unix Time, количество секунд с 1970-01-01 00:00:00 UTC.Приложения могут сохранять даты и время в любом из этих форматов и свободно конвертировать между форматами, используя встроенные функции даты и времени.
Короче говоря, приведенная выше ссылка ДОЛЖНА ПРОЧИТАТЬ и действительно является ответом на ваш вопрос "howя установил тип столбца на дату ".Здесь также приводится очень краткий обзор.
Эта ссылка может оказаться полезной Функции даты и времени
Демонстрация
Следующий кодпример гибкости типов столбцов, как можно хранить даты и некоторые общие способы хранения доступа к данным.Используя вашу базу данных и таблицу (см. Комментарии и примечания): -
DBHelper mydb; //<<<< Note the DatabaseHelper class has been renamed for my convenience
mydb = new DBHelper(this);
SQLiteDatabase sqldb = mydb.getWritableDatabase();
sqldb.delete(DBHelper.Tbname,null,null); //<<<< delete all rows, if any
//Prepare to insert a row
ContentValues cv = new ContentValues();
cv.put(DBHelper.Col_2,"2018-01-01 10:30:00"); //<<<< recognised date format
cv.put(DBHelper.Col_3,100.99D); //<<<< Double into a column defined as TEXT
cv.put(DBHelper.Col_4, "Sorry you scored nothing"); //<<<< Text into an INTEGER
sqldb.insert(
DBHelper.Tbname,
null,
cv
);
cv.clear();
// Prepare to insert a 2nd row
cv.put(DBHelper.Col_2,"Fred");
cv.put(DBHelper.Col_3,System.currentTimeMillis()); //<<<<< can be used stores long as INTEGER
sqldb.insert(DBHelper.Tbname,null,cv);
// get all the rows from the table
Cursor csr = sqldb.query(DBHelper.Tbname,
null,
null,
null,
null,
null,
null
);
while (csr.moveToNext()) {
Log.d("DATA",
"ROW " + csr.getPosition() +
" has a value of " +
String.valueOf(csr.getLong(csr.getColumnIndex(DBHelper.Col_1))) +
" in the " + DBHelper.Col_1 +
" column, a value of " +
csr.getString(csr.getColumnIndex(DBHelper.Col_2)) +
" in the " +
DBHelper.Col_2 +
" column, a value of " +
csr.getString(csr.getColumnIndex(DBHelper.Col_3)) +
" in the " +
DBHelper.Col_3 +
" column, and a value of " +
csr.getString(csr.getColumnIndex(DBHelper.Col_4)) +
" in the " +
DBHelper.Col_4 +
" column."
);
}
csr.close(); //<<<< Should always close a Cursor when done with it
Вышеуказанное приводит к тому, что в журнал выводится следующее: -
ROW 0 has a value of 5 in the ID column, a value of 2018-01-01 10:30:00 in the Name column, a value of 100.99 in the Class column, and a value of Sorry you scored nothing in the Marks column.
ROW 1 has a value of 6 in the ID column, a value of Fred in the Name column, a value of 1527600028305 in the Class column, and a value of null in the Marks column.
- идентификаторывыше, чем ожидалось из-за нескольких запусков приложения.
- 1527600028305 - это отметка времени, когда он был запущен.