Android SQLIte行限制

Android SQLIte行限制,android,sqlite,syntax,triggers,primary-key,Android,Sqlite,Syntax,Triggers,Primary Key,我试图将SQLite数据库中的行数限制为一行。我到处寻找一个合适的解决方案,但没有找到任何地方。我收到了很多建议(约束、触发器等),但并没有找到一个以我目前的技能水平易于实施的解决方案。我已决定尝试触发器,但无法找到正确编写代码的位置。我有结构,但不知道如何正确格式化语法。我的代码在下面,当然不起作用(编译错误)。任何关于如何正确编写android代码的帮助都将不胜感激。我已经浏览了sqlite.org网站() 主键设置为表的数据库: String sqlDataStore = "creat

我试图将SQLite数据库中的行数限制为一行。我到处寻找一个合适的解决方案,但没有找到任何地方。我收到了很多建议(约束、触发器等),但并没有找到一个以我目前的技能水平易于实施的解决方案。我已决定尝试触发器,但无法找到正确编写代码的位置。我有结构,但不知道如何正确格式化语法。我的代码在下面,当然不起作用(编译错误)。任何关于如何正确编写android代码的帮助都将不胜感激。我已经浏览了sqlite.org网站()

主键设置为表的数据库:

  String sqlDataStore = "create table if not exists " +
                    TABLE_NAME_CREDENTIALS + " ("+ BaseColumns._ID + " NOT NULL,"

                                + COLUMN_NAME_USERNAME + " TEXT NOT NULL, "
                                + COLUMN_NAME_PASSWORD + " TEXT NOT NULL, "
                                + " PRIMARY KEY (username, passcode))";
插入:

contentValues.put(LoginDB.COLUMN_NAME_USERNAME, rUsername);
contentValues.put(LoginDB.COLUMN_NAME_PASSWORD, rPasscode);

为什么不数一数行号并在插入之前保护它?为什么坚持使用SQL命令?
顺便说一句,另一种解决方法是预先创建行限制并使用update,而不是insert。

将表限制为一行的最简单方法可能是使用表中的主键,并确保在插入或更新时始终设置为常量值。不需要触发器或其他技巧

CREATE TABLE `limited_table` (
  `id` int(11) NOT NULL,
  `value` text ,
  PRIMARY KEY (`id`)
)
现在,在替换时,请始终在SQL查询中使用常量

ContentValues args = new ContentValues();
args.put(KEY_ID, LIMITED_ID_CONST);
args.put(KEY_VALUE, value );
//Replace
db.replace(DATABASE_TABLE, null, args);

可能重复:这是类似的,但不是重复的。你指的是限制,而不是触发器。据我所知,Limit语句在android SQLite中不起作用。你说的话听起来很有道理,但我无法想象。您可以提供一个示例吗?您可以预先插入100行虚拟内容,然后只更新这些虚拟行,而不插入新的虚拟行。并受其计数保护,为表添加了主键,但我不确定将主键设置为第1行的列的语法
ContentValues args = new ContentValues();
args.put(KEY_ID, LIMITED_ID_CONST);
args.put(KEY_VALUE, value );
//Replace
db.replace(DATABASE_TABLE, null, args);