Android SQLite-创建多个更新或插入的表
我在将值正确插入和更新到数据库中时遇到问题。我有一个数据库,有两个表,每个表有3列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
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);
}
}
}