วันอังคารที่ 16 เมษายน พ.ศ. 2556

แก้ปัญหา บันทึก current Date Time ใน SQLite Android

ปัญหา บันทึก current Date Time ใน SQLite Android


หมาะ : คำที่มีความรู้พื้นฐานเรื่อง SQLite บ้างแล้ว แต่ติดปัญหา

ปัญหา (Problem)

หลายๆคนที่ เขียน Apps Android อาจต้องใช้ SQLite
เวลาจะเพิ่มข้อมูล (insert) ก็ทำวิธีแบบปกติที่หาได้ทั่วๆไปเลย
แต่จะมาติดปัญหา ถ้าเราต้องการจะเพิ่มข้อมูลวันเวลาปัจจุบัน (current datetime)
ทำไง???

แก้ปัญหา (Solutions)

•  กำหนด Type เป็น TEXT ตอนสร้าง Table

•  แก้ปัญหามีได้ 2 วิธี

อันนี้คือส่วนที่ทุกคนจะต้องประกาศก่อนใช้คำสั่งต่างๆใน SQLite นะ

dbHelper = new DatabaseHelper(this.context);
database = dbHelper.getWritableDatabase();


1.  สร้างคำสั้ง sql ลงไปตรงๆเลย โดยผ่าน Method execSQL(String sql);

database.execSQL("INSERT INTO "+TABLE_NAME+" VALUES (null, datetime())");

Note : เหมาะสำหรับข้อมูลที่ใส่ลงไปเป็น ภาษาอังกฤษทั้งหมด ถ้าเป็นภาษาไทยจะทำให้ error


2. สร้างส่วนรับวันที่ปัจจุบันด้วย JAVA แล้วค่อยส่งค่าเข้าไปในการส่งปกติ

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
Date date = new Date();
ContentValues initialValues = new ContentValues(); 
initialValues.put("date_created", dateFormat.format(date));
long rowId = database .insert(DATABASE_TABLE, null, initialValues);

Note.1 : เหมาะทุกกรณี เพราะเป็นวิธีการที่จะทำให้ตัวแปรอื่นๆที่ส่งรองรับได้ทุกภาษา
Note.2 : สำหรับคนที่ใช้ Date(); ไม่ได้ ตรวจสอบ import ดีๆ ว่าเป็น import function Date() ไหม
แต่ถ้ามี 
import java.sql.Date; ให้ลบออกแล้วเปลี่ยนเป็น import function Date()




credit : http://stackoverflow.com/questions/754684/how-to-insert-a-sqlite-record-with-a-datetime-set-to-now-in-android-applicatio