android 数据库 unique,java – UNIQUE约束失败:sqlite数据库:andro...-程序员宅基地

技术标签: android 数据库 unique  

我想在表中插入值.但是只插入了一个值.当我尝试插入新值时,我在log cat中收到错误.

日志猫显示:

abort at 13 in [INSERT INTO event(totalminutesfrom,dayofweek,title,location,totalminutesto,id) VALUES (?,?,?,?,?,?)]: UNIQUE constraint failed: event.id

01-24 11:34:39.764 7763-7763/com.example.siddhi.timetablelayout E/SQLiteDatabase: Error inserting totalminutesfrom=694 dayofweek=null title=qxs location=Eded & Mariz totalminutesto=0 id=0

01-24 11:34:39.764 7763-7763/com.example.siddhi.timetablelayout E/SQLiteDatabase: android.database.sqlite.SQLiteConstraintException: UNIQUE constraint failed: event.id (code 1555)

01-24 11:34:39.764 7763-7763/com.example.siddhi.timetablelayout E/SQLiteDatabase: at android.database.sqlite.SQLiteConnection.nativeExecuteForLastInsertedRowId(Native Method)

01-24 11:34:39.764 7763-7763/com.example.siddhi.timetablelayout E/SQLiteDatabase: at android.database.sqlite.SQLiteConnection.executeForLastInsertedRowId(SQLiteConnection.java:782)

01-24 11:34:39.764 7763-7763/com.example.siddhi.timetablelayout E/SQLiteDatabase: at android.database.sqlite.SQLiteSession.executeForLastInsertedRowId(SQLiteSession.java:788)

01-24 11:34:39.764 7763-7763/com.example.siddhi.timetablelayout E/SQLiteDatabase: at android.database.sqlite.SQLiteStatement.executeInsert(SQLiteStatement.java:86)

01-24 11:34:39.764 7763-7763/com.example.siddhi.timetablelayout E/SQLiteDatabase: at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1471)

01-24 11:34:39.764 7763-7763/com.example.siddhi.timetablelayout E/SQLiteDatabase: at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1341)

01-24 11:34:39.764 7763-7763/com.example.siddhi.timetablelayout E/SQLiteDatabase: at com.example.siddhi.timetablelayout.EventTableHelper.addEvent(EventTableHelper.java:76)

01-24 11:34:39.764 7763-7763/com.example.siddhi.timetablelayout E/SQLiteDatabase: at com.example.siddhi.timetablelayout.AddEventActivity$5.onClick(AddEventActivity.java:217)

它在插入行时显示这两行的错误.

db.insert(TABLE, null, values);

db.addEvent(new EventData(eventTitle,dayOfWeek,totalMinutesFrom, totalMinutesTo,location));

EventTableHelper

public class EventTableHelper extends SQLiteOpenHelper {

private static final String TABLE = "event";

private static final String KEY_ID = "id";

private static final String KEY_TITLE = "title";

private static final String KEY_LOCATION = "location";

private static final String KEY_DAY_OF_WEEK = "dayofweek";

private static final String KEY_TOTAL_MINUTES_FROM = "totalminutesfrom";

private static final String KEY_TOTAL_MINUTES_TO = "totalminutesto";

public EventTableHelper(Context context) {

super(context, Constants.DATABASE_NAME, null, Constants.DATABASE_VERSION);

//3rd argument to be passed is CursorFactory instance

}

// Creating Tables

@Override

public void onCreate(SQLiteDatabase db) {

//createTable(db);

}

public void createTable(SQLiteDatabase db){

String CREATE_EVENTS_TABLE = "CREATE TABLE " + TABLE + "("

+ KEY_ID + " INTEGER PRIMARY KEY," + KEY_TITLE + " TEXT,"

+ KEY_DAY_OF_WEEK +"TEXT" + KEY_TOTAL_MINUTES_FROM +"INTEGER"

+ KEY_TOTAL_MINUTES_TO + "INTEGER" + KEY_LOCATION + "TEXT" + ")";

db.execSQL(CREATE_EVENTS_TABLE);

}

// Upgrading database

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

// Drop older table if existed

// db.execSQL("DROP TABLE IF EXISTS " + TABLE);

// createTable(db);

// Create tables again

//onCreate(db);

}

// code to add the new contact

public void addEvent(EventData event) {

SQLiteDatabase db = this.getWritableDatabase();

ContentValues values = new ContentValues();

values.put(KEY_ID, event.getId());

values.put(KEY_TITLE,event.getTitle()); // Contact Name

values.put(KEY_DAY_OF_WEEK,event.getDayofWeek());

values.put(KEY_TOTAL_MINUTES_FROM,event.getFromMinutes());

values.put(KEY_TOTAL_MINUTES_TO,event.getToMinutes());

values.put(KEY_LOCATION,event.getLocation());

// Inserting Row

db.insert(TABLE, null, values);

//2nd argument is String containing nullColumnHack

db.close(); // Closing database connection

}

// code to get the single contact

EventData getEvent(int id) {

SQLiteDatabase db = this.getReadableDatabase();

Cursor cursor = db.query(TABLE, new String[] { KEY_ID,

KEY_TITLE, KEY_DAY_OF_WEEK, KEY_TOTAL_MINUTES_FROM,KEY_TOTAL_MINUTES_TO,KEY_LOCATION }, KEY_ID + "=?",

new String[] { String.valueOf(id) }, null, null, null, null);

if (cursor != null)

cursor.moveToFirst();

EventData eventData = new EventData(Integer.parseInt(cursor.getString(0)),cursor.getString(1), cursor.getString(2),

cursor.getInt(3),cursor.getInt(4),cursor.getString(5));

return eventData;

}

// code to get all contacts in a list view

public List getAllEvents() {

List conList = new ArrayList();

// Select All Query

String selectQuery = "SELECT * FROM " + TABLE;

SQLiteDatabase db = this.getWritableDatabase();

Cursor cursor = db.rawQuery(selectQuery, null);

// looping through all rows and adding to list

if (cursor.moveToFirst()) {

do {

EventData event = new EventData();

event.setId(Integer.parseInt(cursor.getString(0)));

event.setTitle(cursor.getString(1));

event.setDayofWeek(cursor.getString(2));

event.setFromMinutes(cursor.getInt(3));

event.setToMinutes(cursor.getInt(4));

event.setLocation(cursor.getString(5));

// Adding contact to list

conList.add(event);

} while (cursor.moveToNext());

}

// return contact list

return conList;

}

}

怎么解决这个?

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39948247/article/details/117680334

智能推荐

C++编程技巧_c++获取 gcc的target-程序员宅基地

文章浏览阅读534次。这是编译器指令,告诉GCC编译器使用最大优化级别(O3)和循环展开(unroll-loops)进行编译,以提高程序的运行速度optimize这会告诉编译器尽可能地优化代码以提高运行速度,有时候甚至会牺牲浮点数的精度。这里的程序是计算一个整型数组的所有元素的和,然后输出。如果我们将其与没有优化指令的版本比较,可能会在大型数据集或者复杂的计算中看到明显的运行速度的差异。不过在小型程序和简单的计算中,可能看不出明显的区别。_c++获取 gcc的target

体积雾(dx9)-程序员宅基地

文章浏览阅读1.3k次。1.什么是体积雾? 这个问题通过图片来解答再合适不过了,下面是本文利用体积雾做的一个结果 所谓体积雾:顾名思义就是被限制了形状的雾,本文表述如何通过ImageProcess(图象处理)的方式实现体积雾。 2.常规雾原理 雾效最终体现在雾颜色与场景色的混合上。决定雾的浓度的关键就在这个混合因子上_体积雾

网站后台 服务器,网站后台数据 服务器-程序员宅基地

文章浏览阅读584次。网站后台数据 服务器 内容精选换一换华为云云市场搭建了包括基础软件市场、企业应用市场、建站市场、安全市场、服务市场、解决方案市场、人工智能市场、物联网市场8大子市场,种类丰富,产品众多,用户可以在华为云云市场找到适合自己业务的软件/服务。本文主要介绍了如何使用弹性云服务器的Linux实例搭建Magento电子商务系统。Magento是一款开源电子商务系统,设计灵活,具有模块化架构体系和丰富的功能,..._网站后台数据

详解< meta >标签常用的属性及方法_常用meta设置-程序员宅基地

文章浏览阅读1.4k次,点赞51次,收藏52次。`meta`标签在HTML中扮演着至关重要的角色,它能帮助开发者更好地控制网页的呈现方式、提升SEO效果、指导浏览器行为以及其他与网页相关的元数据管理。_常用meta设置

RabbitMq初识_guest user from anywhere on the network-程序员宅基地

文章浏览阅读145次。文章目录一、认识二、安装1.docker安装2. 配置文件2.RabbitMQ的简单指令三、分类1. Direct直连问题:2. Work queue3. Fanout4. Routing4.1 Direct(订阅)4.2 Topic四、SpringBoot整合RabbitMQ一、认识[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TJhBYPKI-1586753..._guest user from anywhere on the network

今天端午节了,哈哈。。。-程序员宅基地

文章浏览阅读425次。今天过端午了,记录一下。。。先从百度入手,百度一篇《【创意Logo】浓浓的端午味儿……》来叙解了一下她的logo。端一盘粽子,呈一枝艾叶,与你一起过——端午。 自多了端午节假日,端午的“节”气立时浓了起来。这也让现时代的人们,体味到了旧时中国的传统意味。农历五月初五,端午。在中国,流传至今的节日“四大名旦”,当属春节、中秋、清明和端午。而这四者中,端午名气相..._csdn 今天端午了哈哈

随便推点

CMTime详解-AVFoundation视频操作必备基础_cmtimemake-程序员宅基地

文章浏览阅读1.1k次。CMTime 对于视频和音频操作比不可少, 第一:CMTimeMake(a,b) a当前第几帧, b每秒钟多少帧.当前播放时间a/b第二:例如CMTimeMake(60, 30); 第二秒CMTimeMake(30, 15);第二秒两个都是代表第二秒的影片但是第一个播放速度是第二个二倍_cmtimemake

关于fastjson 对象转json出现$ref_"fastjson 转的json,\"$ref\":\"$. jsjson.parse("-程序员宅基地

文章浏览阅读781次。 现在微服务、前后分离什么的那么流行,多数新的程序在返数据给前端的时候直接返回json 数据,这样json工具就有用武之地了常用的json工具有 org.json、Gson 、albaba的fastjson。 昨天本来是用fastjson 对象转json了,发现有些重复引用的对象 会如下展示{"$ref":"$.data.list[0].list[34]"} 看着就像是坐标,这..._"fastjson 转的json,\"$ref\":\"$. jsjson.parse("

禾川Q1系列PLC官方教程_禾川学院培训资料-程序员宅基地

文章浏览阅读3.2k次。禾川Q系列PAC教程_禾川学院培训资料

Eclipse详细安装教程_eclipse的安装步骤-程序员宅基地

文章浏览阅读9.3k次,点赞7次,收藏26次。Eclipse安装教程前言一、Eclipse是什么?二、安装步骤1. Eclipse下载下载网址2. Eclipse安装前言Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。一、Eclipse是什么?Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。二、安装步骤1. E_eclipse的安装步骤

计算机组成原理练习题_在底数取16及尾数为二进制的浮点数中,为了保持数值不变,阶码加1,尾数要( )。-程序员宅基地

文章浏览阅读497次,点赞20次,收藏21次。4. (单选题, 7分)计算机问世至今,新型机器不断推陈出新,不管怎样更新,依然保有“存储程序”的概念,最早提出这种概念的是( )。3. (单选题, 5分)在底数取 16及尾数为二进制的浮点数中 , 为了保持数值不变 , 阶码加 1, 尾数小数点要_( )__。2. (单选题, 5分)若浮点数的机器表示中,尾数用补码表示,则判断该浮点数是否为规格化的方法是尾数的最高数值位__( )__。5. (单选题, 5分)x=+0. 1011, y=+0. 0110,用补码运算得到[x-y]补 =___( )__。_在底数取16及尾数为二进制的浮点数中,为了保持数值不变,阶码加1,尾数要( )。

2013年东北c语言考试题答案,2013东北大学c语言试题-程序员宅基地

文章浏览阅读104次。信息学院 2013-2014 学年第 1 学期 程序设计基础 试题 a总分 班 级装一二 30三 24四 26五六七八九十(10) 若有说明语句:int *p,a;则能通过 scanf 语句正确给输入项读入数据 的程序段是_______。 A) *p=&a; scanf(“%d”,p); B) *p=&a; scanf(“%d”,*p); C) p=&a; scanf(“%..._c语言中的数据的类型不同,在内存中占据不同长度的存储单元

推荐文章

热门文章

相关标签