Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 将setOnDateChangeListener的值传递给数据库_NAME_Android_Sqlite_Android Sqlite - Fatal编程技术网

Android 将setOnDateChangeListener的值传递给数据库_NAME

Android 将setOnDateChangeListener的值传递给数据库_NAME,android,sqlite,android-sqlite,Android,Sqlite,Android Sqlite,如何将setOnDateChangeListener的值传递给数据库_NAME 我这样格式化了我的dbhelper public static String getDateTime() { SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyyMMdd", Locale.getDefault()); Date date = new Date(); retur

如何将setOnDateChangeListener的值传递给数据库_NAME

我这样格式化了我的dbhelper

public static String getDateTime() {
        SimpleDateFormat dateFormat = new SimpleDateFormat(
                "yyyyMMdd", Locale.getDefault());
        Date date = new Date();
        return dateFormat.format(date);
    }

    // Database Name
    private static final String DATABASE_NAME = getDateTime();
当我格式化日历setOnDateChangeListener时,就像格式化数据库名称一样

下面是我的回购类,该类回购类从今天开始计算金额(FAT)。
我想要的是从我在日历上单击的日期获取总和(FAT)

public double totalFatB(){

        SQLiteDatabase db = dbHelper.getReadableDatabase();

        String query = "SELECT SUM(Fat) FROM " +breakfast.TABLE;

        Cursor c = db.rawQuery(query, null);

        c.moveToFirst();
        double i=c.getDouble(0);

        return i;

    }
这是我的听众

CalendarView calendarView=(CalendarView) findViewById(R.id.calendarView);
        calendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {

            @Override
            public void onSelectedDayChange(CalendarView view, int year, int month,
                                            int dayOfMonth) {
                month = month+1;
                if ((month == 1) || (month == 2)|| (month == 3)|| (month == 4)|| (month == 5)|| (month == 6)|| (month == 7)|| (month == 8)|| (month == 9) )
                {
                    String m= "0"+month;
                    if ((dayOfMonth == 1) || (dayOfMonth == 2)|| (dayOfMonth == 3)|| (dayOfMonth == 4)|| (dayOfMonth == 5)|| (dayOfMonth == 6)|| (dayOfMonth == 7)|| (dayOfMonth == 8)|| (dayOfMonth == 9) ) {
                        String d = "0" + dayOfMonth;
                         date= year +""+ m +""+ d;
                        Toast.makeText(getApplicationContext(),date, Toast.LENGTH_LONG).show();
                        /*Toast.makeText(getApplicationContext(), "" + year + m + d, Toast.LENGTH_LONG).show();*/
                    }
                        else
                        {
                             date= year +""+ m +""+ dayOfMonth;
                            Toast.makeText(getApplicationContext(),date, Toast.LENGTH_LONG).show();
                            /*Toast.makeText(getApplicationContext(), "" + year + m + dayOfMonth, Toast.LENGTH_LONG).show();*/
                        }
                }
                else if ((dayOfMonth == 1) || (dayOfMonth == 2)|| (dayOfMonth == 3)|| (dayOfMonth == 4)|| (dayOfMonth == 5)|| (dayOfMonth == 6)|| (dayOfMonth == 7)|| (dayOfMonth == 8)|| (dayOfMonth == 9) ) {
                    String d = "0" + dayOfMonth;
                     date= year +""+ month +""+ d;
                    Toast.makeText(getApplicationContext(),date, Toast.LENGTH_LONG).show();
                    /*Toast.makeText(getApplicationContext(), "" + year + month + d, Toast.LENGTH_LONG).show();*/
                }
                    else
                {
                    date= year +""+ month +""+ dayOfMonth;
                    Toast.makeText(getApplicationContext(),date, Toast.LENGTH_LONG).show();
                    /*Toast.makeText(getApplicationContext(), "" + year + month + dayOfMonth, Toast.LENGTH_LONG).show();*/
                }
            }
        });
如何将setOnDateChangeListener的值传递给数据库_NAME

简单地说,你不应该这样做。如果您这样做了,这意味着您每天有一个数据库文件,这会导致应用程序数据的开销

除此之外,SQLiteOpenHelper类在构造数据库名称字符串时只查看该字符串,因此,如果您有多个名称,则会为每个日期重新创建该对象,这会耗尽设备的内存/电池

理论上,这是可能的

@Override
public void onSelectedDayChange(CalendarView view, int year, int month,
                                        int dayOfMonth) {
    // Build a Calendar
    Calendar c = Calendar.getInstance();
    // c.set(); // TODO: Set year, month, dayOfMonth 
    ...
    SimpleDateFormat dateFormat = new SimpleDateFormat(
            "yyyyMMdd", Locale.getDefault());

    // Get a database by name
    String DATABASE_NAME = dateFormat.format(c.getTime());
    SQLiteDatabase db = SQLiteDatabase.openDatabase(DATABASE_NAME , null, SQLiteDatabase.OPEN_READONLY);

    // TODO: Query 'db'
但我不推荐


相反,您可以使用one主数据库和

然后,您可以执行
public double totalFatB(Date-Date)
,或者直接传递
(年、月、日)
,并构建
WHERE
语句,以从
setOnDateChangeListener
方法中筛选特定日期


另外,请在该方法中再次使用
SimpleDateFormat
,以正确构建日期字符串,如图所示。If语句非常冗长

您只需要一个数据库总数,而不是每天一个。把它命名为“餐食”。您可以稍后使用日期进行查询。但是如果需要帮助,请显示
setOnDateChangeListener
方法。关于Hello sir cricket,好的,我将为此创建一个数据库,但是如何传递我的onSelectedDayChange的值作为我的dbhelper获取数据的日期的参考。顺便说一句,先生,我编辑了我的帖子,包括了我选择的日期变更。啊,先生,你是说我只需要做一个数据库名?我不能这么做,先生,因为我有这么多的表和列在里面,我想在1个数据库中,name有10个表,而在这个表中有15个列。先生,请教我如何使用setOnDateChangeListener获取数据库名称。先生,这是我唯一的机会。如果您的问题是列计数,那么您可能会复制数据,您需要更好的数据库设计,但这太宽泛了,无法回答。对不起,先生,我的问题。我是sqlite和android studio方面的新手先生,但是我的想法可能吗,先生?因为我想,先生,我需要大约3天的时间来重新格式化我的密码。如果我的想法可能的话,请告诉我,先生。我对列数不太在行,先生。但我的问题是,我需要传递setOnDateChangeListener作为我的应用程序将获取的数据库名称的引用。1)不需要叫我先生2)我认为你的想法不可能(至少不能使用SQLiteOpenHelper类)因为必须在选择日期之前使用一些现有名称创建数据库,所以您有机会了解正确的数据库设计,无论需要多长时间都是值得的