Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.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

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 如何获取不同表但相同列名的和_Android_Sqlite_Android Sqlite - Fatal编程技术网

Android 如何获取不同表但相同列名的和

Android 如何获取不同表但相同列名的和,android,sqlite,android-sqlite,Android,Sqlite,Android Sqlite,我有两个问题,但它们几乎是相关的 第一个问题: 我有4张不同的桌子,分别命名为早餐、午餐、晚餐和其他,但它们的列名相同,如脂肪、卡路里和铁。 添加它们并在文本视图中显示为每个(脂肪、卡路里和铁)的最佳方式是什么 比如说 Total Fat is (111) Total Calories is (222) Total Iron is (333) 第二个问题 如果我想显示不同表的所有列的数据呢。 如何在sqlite中显示来自不同表的列fat的所有值 例如,我的sqlite数据库中有这个 break

我有两个问题,但它们几乎是相关的

第一个问题:

我有4张不同的桌子,分别命名为早餐、午餐、晚餐和其他,但它们的列名相同,如脂肪、卡路里和铁。

添加它们并在文本视图中显示为每个(脂肪、卡路里和铁)的最佳方式是什么

比如说

Total Fat is (111)
Total Calories is (222)
Total Iron is (333)
第二个问题

如果我想显示不同表的所有列的数据呢。 如何在sqlite中显示来自不同表的列fat的所有值

例如,我的sqlite数据库中有这个

breakfast table    lunch table        dinner table       others table 
  Fat column       Fat column          Fat column         Fat column
   1                  3                    6                  9
   2                  4                    7                  10
   3                  5                    8                  11
我想在textview上显示类似的内容

Fats
1
2
3
4
5
6
7
8
9
10
11

我将创建一个表,并添加一个名为timeOfDay的列

在数据库帮助程序处理程序类中

public ArrayList<Integer> getFats(int timeOfDay) {
    //0:breakfast
    //1:lunch
    //3:dinner
    //4:other
    ArrayList<Integer> result = new ArrayList<Integer>();
    SQLiteDatabase db = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
    String selectQuery = "SELECT * FROM TABLE WHERE timeOfDay = " + timeOfDay;
    Cursor cursor = db.rawQuery(selectQuery, null);
    if (cursor.moveToFirst()) {
        result.add(cursor.getInt(cursor.getColumnIndex("fatColumn")));
        while (cursor.moveToNext()) {
            result.add(cursor.getInt(cursor.getColumnIndex("fatColumn")));
        }
    }
    cursor.close();
    db.close();
    return result;
}
public ArrayList getFats(int timeOfDay){
//0:早餐
//1:午餐
//3:晚餐
//4:其他
ArrayList结果=新建ArrayList();
SQLiteDatabase db=SQLiteDatabase.openDatabase(myPath,null,SQLiteDatabase.OPEN\u READONLY);
String selectQuery=“从timeOfDay=“+timeOfDay”所在的表中选择*;
Cursor Cursor=db.rawQuery(selectQuery,null);
if(cursor.moveToFirst()){
添加(cursor.getInt(cursor.getColumnIndex(“fatColumn”));
while(cursor.moveToNext()){
添加(cursor.getInt(cursor.getColumnIndex(“fatColumn”));
}
}
cursor.close();
db.close();
返回结果;
}
在活动中,您要显示信息

ArrayList<Integer> fats = db.getFats(1);
int fatTotal = 0;
for(Integer fat : fats){
    //output string for this particular fat reading
    fatTotal += fat;
}
//output string of sum sort for totalFat
arraylistfats=db.getFats(1);
int-fatTotal=0;
for(整型脂肪:脂肪){
//此特定fat读取的输出字符串
脂肪总量+=脂肪;
}
//totalFat的总和排序输出字符串

我将创建一个表,并添加一个名为timeOfDay的列

在数据库帮助程序处理程序类中

public ArrayList<Integer> getFats(int timeOfDay) {
    //0:breakfast
    //1:lunch
    //3:dinner
    //4:other
    ArrayList<Integer> result = new ArrayList<Integer>();
    SQLiteDatabase db = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
    String selectQuery = "SELECT * FROM TABLE WHERE timeOfDay = " + timeOfDay;
    Cursor cursor = db.rawQuery(selectQuery, null);
    if (cursor.moveToFirst()) {
        result.add(cursor.getInt(cursor.getColumnIndex("fatColumn")));
        while (cursor.moveToNext()) {
            result.add(cursor.getInt(cursor.getColumnIndex("fatColumn")));
        }
    }
    cursor.close();
    db.close();
    return result;
}
public ArrayList getFats(int timeOfDay){
//0:早餐
//1:午餐
//3:晚餐
//4:其他
ArrayList结果=新建ArrayList();
SQLiteDatabase db=SQLiteDatabase.openDatabase(myPath,null,SQLiteDatabase.OPEN\u READONLY);
String selectQuery=“从timeOfDay=“+timeOfDay”所在的表中选择*;
Cursor Cursor=db.rawQuery(selectQuery,null);
if(cursor.moveToFirst()){
添加(cursor.getInt(cursor.getColumnIndex(“fatColumn”));
while(cursor.moveToNext()){
添加(cursor.getInt(cursor.getColumnIndex(“fatColumn”));
}
}
cursor.close();
db.close();
返回结果;
}
在活动中,您要显示信息

ArrayList<Integer> fats = db.getFats(1);
int fatTotal = 0;
for(Integer fat : fats){
    //output string for this particular fat reading
    fatTotal += fat;
}
//output string of sum sort for totalFat
arraylistfats=db.getFats(1);
int-fatTotal=0;
for(整型脂肪:脂肪){
//此特定fat读取的输出字符串
脂肪总量+=脂肪;
}
//totalFat的总和排序输出字符串
我有四张不同的桌子,分别是早餐、午餐、晚餐和其他,但它们的列名相同,比如脂肪、卡路里和铁

让不同的表具有相同的列应该是您的主要问题,而不是如何组合不同的表。(因为
JOIN
和跨表扫描非常昂贵)

你应该这样做

CREATE TABLE IF NOT EXISTS meals (
  _id PRIMARY KEY AUTOINCREMENT,
  meal_time VARCHAR(20), 
  fat INTEGER, 
  calories INTEGER, 
  iron INTEGER,
  time_eaten DEFAULT current_timestamp
)
参考默认值-

然后,您将
插入一个带有
用餐时间=“晚餐”
的值,并选择
其中用餐时间=“晚餐”

在这一点上,你的第二个问题是微不足道的

SELECT fat from meals ORDER BY meal_time;
如果您想要晚餐、午餐、早餐的具体选项,请添加一个
WHERE
,如图所示

我有四张不同的桌子,分别是早餐、午餐、晚餐和其他,但它们的列名相同,比如脂肪、卡路里和铁

让不同的表具有相同的列应该是您的主要问题,而不是如何组合不同的表。(因为
JOIN
和跨表扫描非常昂贵)

你应该这样做

CREATE TABLE IF NOT EXISTS meals (
  _id PRIMARY KEY AUTOINCREMENT,
  meal_time VARCHAR(20), 
  fat INTEGER, 
  calories INTEGER, 
  iron INTEGER,
  time_eaten DEFAULT current_timestamp
)
参考默认值-

然后,您将
插入一个带有
用餐时间=“晚餐”
的值,并选择
其中用餐时间=“晚餐”

在这一点上,你的第二个问题是微不足道的

SELECT fat from meals ORDER BY meal_time;

如果您想要晚餐、午餐、早餐的具体选项,请添加一个
WHERE
,如图所示

我有两个问题-所以你应该问两个独立的问题可能我应该问不同的问题,先生,但这两个问题彼此距离不够远,因此,我认为比松可以回答其中一个问题,也可以回答另一个问题。我有两个问题-因此你应该问两个单独的问题。主席先生,我可能会问不同的问题,但这两个问题之间的距离不够远,因此我认为比松可以回答其中一个问题,也可以回答另一个问题。