Android アプリケーションで SQLite レコードを 'now' に設定された datetime で挿入する方法
Android アプリケーションで SQLite レコードを 'now' に設定された datetime で挿入する方法
ContentValues オブジェクトは、SQLite データベースに挿入するデータのキーと値のペアを格納するために使用されます。
ContentValues values = new ContentValues();
'now' に設定された datetime 値を取得する
現在の日時を取得するには、Calendar
クラスを使用できます。
Calendar calendar = Calendar.getInstance();
long now = calendar.getTimeInMillis();
datetime 値を ContentValues オブジェクトに追加する
values.put("datetime", now);
SQLiteOpenHelper
サブクラスの insert()
メソッドを使用して、レコードをデータベースに挿入します。
SQLiteDatabase db = getWritableDatabase();
long rowId = db.insert("table_name", null, values);
db.close();
コード例
public class MyDatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "my_database.db";
private static final int DATABASE_VERSION = 1;
public MyDatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE table_name (id INTEGER PRIMARY KEY AUTOINCREMENT, datetime DATETIME)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// ...
}
public void insertRecord() {
ContentValues values = new ContentValues();
Calendar calendar = Calendar.getInstance();
long now = calendar.getTimeInMillis();
values.put("datetime", now);
SQLiteDatabase db = getWritableDatabase();
long rowId = db.insert("table_name", null, values);
db.close();
}
}
注意事項
datetime
列は、DATETIME
型である必要があります。now
変数は、ミリ秒単位のタイムスタンプである必要があります。
public class MainActivity extends AppCompatActivity {
private MyDatabaseHelper dbHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dbHelper = new MyDatabaseHelper(this);
// レコードを挿入する
dbHelper.insertRecord();
}
}
public class MyDatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "my_database.db";
private static final int DATABASE_VERSION = 1;
public MyDatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE table_name (id INTEGER PRIMARY KEY AUTOINCREMENT, datetime DATETIME)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// ...
}
public void insertRecord() {
ContentValues values = new ContentValues();
Calendar calendar = Calendar.getInstance();
long now = calendar.getTimeInMillis();
values.put("datetime", now);
SQLiteDatabase db = getWritableDatabase();
long rowId = db.insert("table_name", null, values);
db.close();
}
}
このコードを実行するには、以下の手順が必要です。
- 新しい Android プロジェクトを作成します。
- 上記のコードを
MainActivity.java
ファイルとMyDatabaseHelper.java
ファイルに追加します。 - プロジェクトをビルドして実行します。
このコードは、以下のことを行います。
MyDatabaseHelper
サブクラスを作成します。onCreate()
メソッドで、table_name
テーブルを作成します。insertRecord()
メソッドで、ContentValues
オブジェクトを作成して、datetime
値に現在の日時を設定します。
Android アプリケーションで SQLite レコードを 'now' に設定された datetime で挿入する他の方法
CURRENT_TIMESTAMP キーワードを使用する
INSERT
ステートメントで CURRENT_TIMESTAMP
キーワードを使用すると、現在の日時が自動的に挿入されます。
INSERT INTO table_name (datetime)
VALUES (CURRENT_TIMESTAMP);
SimpleDateFormat
クラスを使用して、現在の日時を String
型に変換してから、ContentValues
オブジェクトに追加することができます。
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String datetime = sdf.format(new Date());
ContentValues values = new ContentValues();
values.put("datetime", datetime);
SQLiteDatabase db = getWritableDatabase();
long rowId = db.insert("table_name", null, values);
db.close();
Date date = new Date();
long now = date.getTime();
ContentValues values = new ContentValues();
values.put("datetime", now);
SQLiteDatabase db = getWritableDatabase();
long rowId = db.insert("table_name", null, values);
db.close();
android sqlite content-values