求指点。SQLite数据存储出错

a_a\\\ 2013-09-25 01:54:34
这是我实现SQLiteOpenHelper的类,并且只在onCreate方法中执行一下语句:
sqLiteDatabase.execSQL("CREATE TABLE user (id int primary key,name varchar(10))");



这是我在activity执行的语句:
MySqlite(SqliteActivity.this,"earlDatabase.db",null,1);
SQLiteDatabase write = mySqlite.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("id",1);
values.put("name","earl");

write.insert("user", null, values);
Toast.makeText(SqliteActivity.this,"插入值成功______"+values.get("id"),1200).show();

values.put("id",2);
values.put("name","abc");

write.insert("user", null, values);
Toast.makeText(SqliteActivity.this,"插入值成功______"+values.get("id"),1200).show();


但报错。第一次运行不报错,第一次之后就报错。虽然报错,但数据库有数据插入。以下是错误:




求高人指点,到底错在哪里了?
...全文
192 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
tantahe 2013-09-26
  • 打赏
  • 举报
回复
主键id设置成自动增加的。 你要插入的值就是name嘛。 每插入一个name,id自动加1。
a_a\\\ 2013-09-26
  • 打赏
  • 举报
回复
引用 10 楼 tantahe 的回复:
引用 9 楼 jie873440996 的回复:
[quote=引用 7 楼 tantahe 的回复:] [quote=引用 6 楼 wang584406938 的回复:] [quote=引用 4 楼 jie873440996 的回复:] [quote=引用 3 楼 wang584406938 的回复:] 我记得如果定义了主键,赋值的时候不给id赋值,sqlite会自动添加主键列的值,默认的当前最大值加1
这样的吗?第一次用SQLite。我也尝试了id设置不是主键,但还是报错
我是说你创建了一个带有主键ID的表之后,在添加数据的时候,不给id赋值,sqlite会自动给主键列赋值的,我记得是这样,你可以试试[/quote] 但是我把建表语句改了,把primary key去除了,还是报错。并且ContextValues不能这样写“cv.put("id",null);”,不能设为null值。[/quote] primary key不用去掉,你要把cv.put("id",***);这两句去掉。[/quote] 但我要向数据库插入值,去掉put方法,怎么向数据库插入数据?
tantahe 2013-09-26
  • 打赏
  • 举报
回复
引用 9 楼 jie873440996 的回复:
引用 7 楼 tantahe 的回复:
[quote=引用 6 楼 wang584406938 的回复:] [quote=引用 4 楼 jie873440996 的回复:] [quote=引用 3 楼 wang584406938 的回复:] 我记得如果定义了主键,赋值的时候不给id赋值,sqlite会自动添加主键列的值,默认的当前最大值加1
这样的吗?第一次用SQLite。我也尝试了id设置不是主键,但还是报错
我是说你创建了一个带有主键ID的表之后,在添加数据的时候,不给id赋值,sqlite会自动给主键列赋值的,我记得是这样,你可以试试[/quote] 但是我把建表语句改了,把primary key去除了,还是报错。并且ContextValues不能这样写“cv.put("id",null);”,不能设为null值。[/quote] primary key不用去掉,你要把cv.put("id",***);这两句去掉。
a_a\\\ 2013-09-26
  • 打赏
  • 举报
回复
引用 7 楼 tantahe 的回复:
引用 6 楼 wang584406938 的回复:
[quote=引用 4 楼 jie873440996 的回复:] [quote=引用 3 楼 wang584406938 的回复:] 我记得如果定义了主键,赋值的时候不给id赋值,sqlite会自动添加主键列的值,默认的当前最大值加1
这样的吗?第一次用SQLite。我也尝试了id设置不是主键,但还是报错
我是说你创建了一个带有主键ID的表之后,在添加数据的时候,不给id赋值,sqlite会自动给主键列赋值的,我记得是这样,你可以试试[/quote] 但是我把建表语句改了,把primary key去除了,还是报错。并且ContextValues不能这样写“cv.put("id",null);”,不能设为null值。
a_a\\\ 2013-09-26
  • 打赏
  • 举报
回复
引用 7 楼 tantahe 的回复:
引用 6 楼 wang584406938 的回复:
[quote=引用 4 楼 jie873440996 的回复:] [quote=引用 3 楼 wang584406938 的回复:] 我记得如果定义了主键,赋值的时候不给id赋值,sqlite会自动添加主键列的值,默认的当前最大值加1
这样的吗?第一次用SQLite。我也尝试了id设置不是主键,但还是报错
我是说你创建了一个带有主键ID的表之后,在添加数据的时候,不给id赋值,sqlite会自动给主键列赋值的,我记得是这样,你可以试试[/quote] 正解。 第二次插入同样的数据,由于id已存在,所以抛出了异常。[/quote]但是我把建表改了,把primary key还是报错。那为什么会报错
tantahe 2013-09-25
  • 打赏
  • 举报
回复
引用 6 楼 wang584406938 的回复:
引用 4 楼 jie873440996 的回复:
[quote=引用 3 楼 wang584406938 的回复:] 我记得如果定义了主键,赋值的时候不给id赋值,sqlite会自动添加主键列的值,默认的当前最大值加1
这样的吗?第一次用SQLite。我也尝试了id设置不是主键,但还是报错
我是说你创建了一个带有主键ID的表之后,在添加数据的时候,不给id赋值,sqlite会自动给主键列赋值的,我记得是这样,你可以试试[/quote] 正解。 第二次插入同样的数据,由于id已存在,所以抛出了异常。
wang584406938 2013-09-25
  • 打赏
  • 举报
回复
引用 4 楼 jie873440996 的回复:
引用 3 楼 wang584406938 的回复:
我记得如果定义了主键,赋值的时候不给id赋值,sqlite会自动添加主键列的值,默认的当前最大值加1
这样的吗?第一次用SQLite。我也尝试了id设置不是主键,但还是报错
我是说你创建了一个带有主键ID的表之后,在添加数据的时候,不给id赋值,sqlite会自动给主键列赋值的,我记得是这样,你可以试试
a_a\\\ 2013-09-25
  • 打赏
  • 举报
回复
引用 2 楼 tcmakebest 的回复:
id int primary key 表示 id 是唯一主键,不能有重复的值插入,应该先从数据库中查出最大的 ID,然后加1,再插入。
我也试过设置id 不是 主键,但是还是会报错。不知道为什么?
a_a\\\ 2013-09-25
  • 打赏
  • 举报
回复
引用 3 楼 wang584406938 的回复:
我记得如果定义了主键,赋值的时候不给id赋值,sqlite会自动添加主键列的值,默认的当前最大值加1
这样的吗?第一次用SQLite。我也尝试了id设置不是主键,但还是报错
wang584406938 2013-09-25
  • 打赏
  • 举报
回复
我记得如果定义了主键,赋值的时候不给id赋值,sqlite会自动添加主键列的值,默认的当前最大值加1
tcmakebest 2013-09-25
  • 打赏
  • 举报
回复
id int primary key 表示 id 是唯一主键,不能有重复的值插入,应该先从数据库中查出最大的 ID,然后加1,再插入。
凉凉二点凉 2013-09-25
  • 打赏
  • 举报
回复
ID这个字段什么属性?是主键吗?应该不能重复的值

80,475

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧