Android SQLite-创建多个更新或插入的表

Android SQLite-创建多个更新或插入的表,android,sqlite,date,Android,Sqlite,Date,我在将值正确插入和更新到数据库中时遇到问题。我有一个数据库,有两个表,每个表有3列DATE,NUM\u X,NUM\u Y。这两个不同的表包含相同的列,插入值方式的唯一区别是HOURS\u表将采用HH(一天中的当前小时),而DATE\u表将采用短时间字符串dd/MM/yyyy 这些值不会插入到新行中,而是更新第一行的值。两个表当前只有一行 public static final String HOURS_TABLE = "HOURS_TABLE"; public static final Str

我在将值正确插入和更新到数据库中时遇到问题。我有一个数据库,有两个表,每个表有3列
DATE
NUM\u X
NUM\u Y
。这两个不同的表包含相同的列,插入值方式的唯一区别是
HOURS\u表
将采用
HH
(一天中的当前小时),而
DATE\u表
将采用短时间字符串
dd/MM/yyyy

这些值不会插入到新行中,而是更新第一行的值。两个表当前只有一行

public static final String HOURS_TABLE = "HOURS_TABLE";
public static final String DATE_TABLE = "DATE_TABLE";
public static final String CreateHoursTable = "create table "+ 
HOURS_TABLE +" ("+DATE+" string not null, "+NUM_X+
" integer default 0,"+NUM_Y+" integer default 0)";

public static final String CreateDateTable = "create table "+ 
DATE_TABLE +" ("+DATE+" string not null, "+NUM_X+" 
integer default 0,"+NUM_Y+" integer default 0)";

@Override
public void onCreate(SQLiteDatabase db)
{
    // TODO Auto-generated method stub
    db.execSQL(CreateDateTable);
    db.execSQL(CreateHoursTable);
}
可以传入两种不同类型的日期字符串,格式为dd/MM/yyyy(短日期字符串),另一种为HH(小时)

wherergs
字符串是where子句的变量,因此当从数据库中选择的
DATE
等于
DATE
时,它将更新所选列,如果未选择任何内容(current_day.equals(“”),则将执行插入新行的语句

    String WHEREargs = DATE+"="+date;
    if(Version_Zero_HoursTable_One_DateTable == 0)
    {
        if(current_day.equals(""))
        {
        return ourDatabase.insert(HOURS_TABLE, null, cv);
        }
        else
        {
        return ourDatabase.update(HOURS_TABLE, cv, WHEREargs, null);
        }
    }
    else
    {
        if(current_day.equals(""))
        {
        return ourDatabase.insert(DATE_TABLE, null, cv);
        }
        else
        {
        return ourDatabase.update(DATE_TABLE, cv, WHEREargs, null);
        }
    }
}

任何帮助都将不胜感激,谢谢

您使用的
date
变量错误

日期值(如2014年3月24日)不能直接用作WHERE表达式;它将被解释为两个整数除法

类似地,诸如
DATE=24/03/2014
之类的字符串也不能用作WHERE表达式,因为它将日期列中的值与数字进行比较

在SQL中,字符串必须用单引号括起来。 但是,为了避免格式问题和SQL注入攻击,最好使用参数:

字符串,其中=DATE+“=?”;
String[]wherergs=新字符串[]{date};
...
db.query(…,其中,wherergs,…);

您的问题是什么?没有添加新行,NUM_x,NUM_Y中的值会更改/更新,但当日期更改时(对于小时,当它到达下一个小时时,它将插入新行而不是更新当前行)(对于日期,当日期更改时,将插入新行而不是更新当前行),我希望这有助于解释是否可以将它们作为字符串进行比较?因此,如果传入的字符串与表中当前的另一个字符串不同,它将创建一个新行?我正在将值插入日期列(文本/字符串列),因此我想我要问的是,如果该列中的数据是字符串,我可以比较吗?否?日期变量是一个字符串。您的问题是不正确的格式更改了apaprent类型。谢谢!我使用了一个
where
变量和一个
wherergs
变量,现在一切都正常了,谢谢!
    String WHEREargs = DATE+"="+date;
    if(Version_Zero_HoursTable_One_DateTable == 0)
    {
        if(current_day.equals(""))
        {
        return ourDatabase.insert(HOURS_TABLE, null, cv);
        }
        else
        {
        return ourDatabase.update(HOURS_TABLE, cv, WHEREargs, null);
        }
    }
    else
    {
        if(current_day.equals(""))
        {
        return ourDatabase.insert(DATE_TABLE, null, cv);
        }
        else
        {
        return ourDatabase.update(DATE_TABLE, cv, WHEREargs, null);
        }
    }
}