Я новичок в android. Я создал сборщик дат. Но я не мог вставить дату в базу данных. Я попытался как:Как вставить дату в базу данных SqLite в android с datepicker
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String formattedDate = formatter.format(provider.getDate());
values.put(DATE, formattedDate);
типа DATE данных не поддерживается Android. Поэтому я объявлен как String. Но проблема не решена. Вот мой код:
Handler Database
public class DatabaseHandler extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "income.db";
public static final String TABLE_NAME = "income_table";
public static final String ID="id";
public static final String AMOUNT = "amount";
public static final String PAYER_NAME = "payer";
public static final String NOTE = "note";
public static final String DATE= "date";
String query = "CREATE TABLE " + TABLE_NAME +
"(" +ID+ " integer primary key autoincrement, " + AMOUNT + " real, "
+ PAYER_NAME + " text, " + NOTE + " text, " + DATE + " text " + ")";
public DatabaseHandler(Context context) {
super(context, DATABASE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
sqLiteDatabase.execSQL(query);
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(sqLiteDatabase);
}
public void addInformation(DataProvider provider){
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String formattedDate = formatter.format(provider.getDate());
SQLiteDatabase db = getWritableDatabase();
ContentValues values=new ContentValues();
values.put(AMOUNT,provider.getMoney());
values.put(PAYER_NAME,provider.getName());
values.put(NOTE,provider.getDesc());
values.put(DATE, formattedDate);
db.insert(TABLE_NAME, null, values);
db.close();
}
DataProvider Класс:
public class DataProvider {
private double money;
private String name;
private String desc;
private String date;
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public DataProvider(double money, String name, String desc, String date) {
this.money = money;
this.name = name;
this.desc = desc;
this.date=date;
}
public double getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}
Datepicker класс:
public class Income extends AppCompatActivity implements View.OnClickListener {
TextView amount, payer, note, show,showDate;
EditText edit_amount, payer_name, edit_note;
Button save, cancel;
DatabaseHandler db;
ImageButton date;
int year,month,day;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.add_income);
save = (Button) findViewById(R.id.save);
cancel = (Button) findViewById(R.id.cancel);
amount = (TextView) findViewById(R.id.amount);
payer = (TextView) findViewById(R.id.payer);
note = (TextView) findViewById(R.id.note);
show = (TextView) findViewById(R.id.show);
showDate = (TextView) findViewById(R.id.showDate);
edit_amount = (EditText) findViewById(R.id.edit_amount);
payer_name = (EditText) findViewById(R.id.edit_payer);
edit_note = (EditText) findViewById(R.id.edit_note);
//date= (ImageButton) findViewById(R.id.datePicker);
db = new DatabaseHandler(this);
save.setOnClickListener(this);
cancel.setOnClickListener(this);
showDate.setOnClickListener(this);
}
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
public void onClick(View view) {
if (view.getId() == R.id.save) {
String amounts,payers,notes,date;
amounts=edit_amount.getText().toString();
payers= payer_name.getText().toString();
notes= edit_note.getText().toString();
date=showDate.getText().toString();
if(amounts.isEmpty())
{
edit_amount.setError("Amounts should not be blank");
}
else {
Double a =new Double(amounts.toString());
DataProvider provider = new DataProvider(a, payers, notes,date);
db.addInformation(provider);
Intent i = new Intent(this, MainActivity.class);
startActivity(i);
}
}
if (view.getId() == R.id.cancel) {
Intent i =new Intent(this,MainActivity.class);
startActivity(i);
}
if (view.getId()==R.id.showDate){
final Calendar c = Calendar.getInstance();
year = c.get(Calendar.YEAR);
month = c.get(Calendar.MONTH);
day = c.get(Calendar.DAY_OF_MONTH);
DatePickerDialog dpd = new DatePickerDialog(this,
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {
showDate.setText(i+"/"+(i1+1)+"/"+i2);
}
},year,month,day);
dpd.show();
}
}
}
Я пробовал, но он не работает – Fatema
Вы получаете сообщение об ошибке ? – Girish
и сможете ли вы увидеть текст в showText? перед сохранением ... – Girish