这是我实现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();但报错。第一次运行不报错,第一次之后就报错。虽然报错,但数据库有数据插入。以下是错误:
求高人指点,到底错在哪里了?
android数据存储sqlite

解决方案 »

  1.   

    id int primary key 表示 id 是唯一主键,不能有重复的值插入,应该先从数据库中查出最大的 ID,然后加1,再插入。
      

  2.   

    我记得如果定义了主键,赋值的时候不给id赋值,sqlite会自动添加主键列的值,默认的当前最大值加1
      

  3.   

    这样的吗?第一次用SQLite。我也尝试了id设置不是主键,但还是报错
      

  4.   


    我是说你创建了一个带有主键ID的表之后,在添加数据的时候,不给id赋值,sqlite会自动给主键列赋值的,我记得是这样,你可以试试
      

  5.   


    我是说你创建了一个带有主键ID的表之后,在添加数据的时候,不给id赋值,sqlite会自动给主键列赋值的,我记得是这样,你可以试试
    正解。
    第二次插入同样的数据,由于id已存在,所以抛出了异常。
      

  6.   


    我是说你创建了一个带有主键ID的表之后,在添加数据的时候,不给id赋值,sqlite会自动给主键列赋值的,我记得是这样,你可以试试
    正解。
    第二次插入同样的数据,由于id已存在,所以抛出了异常。但是我把建表改了,把primary key还是报错。那为什么会报错
      

  7.   


    我是说你创建了一个带有主键ID的表之后,在添加数据的时候,不给id赋值,sqlite会自动给主键列赋值的,我记得是这样,你可以试试
    但是我把建表语句改了,把primary key去除了,还是报错。并且ContextValues不能这样写“cv.put("id",null);”,不能设为null值。
      

  8.   


    我是说你创建了一个带有主键ID的表之后,在添加数据的时候,不给id赋值,sqlite会自动给主键列赋值的,我记得是这样,你可以试试
    但是我把建表语句改了,把primary key去除了,还是报错。并且ContextValues不能这样写“cv.put("id",null);”,不能设为null值。
    primary key不用去掉,你要把cv.put("id",***);这两句去掉。
      

  9.   


    我是说你创建了一个带有主键ID的表之后,在添加数据的时候,不给id赋值,sqlite会自动给主键列赋值的,我记得是这样,你可以试试
    但是我把建表语句改了,把primary key去除了,还是报错。并且ContextValues不能这样写“cv.put("id",null);”,不能设为null值。
    primary key不用去掉,你要把cv.put("id",***);这两句去掉。
    但我要向数据库插入值,去掉put方法,怎么向数据库插入数据?
      

  10.   

    主键id设置成自动增加的。
    你要插入的值就是name嘛。
    每插入一个name,id自动加1。