2012-09-18 3 views
0

Cette erreur s'affiche à chaque fois que j'essaie d'insérer un nouvel enregistrement dans la base de données. Je sais que la raison de ce que je pense est le double du primaire. Je définis la clé primaire à AUTO INCREMENT. Comment puis-je corriger cette erreur?erreur lors de l'insertion dans la base de données sqlite erreur code 19 erreur échouée

est ici le

SQLHandler.java

public class SQLHandler { 
    public static final String KEY_ROOMMOVEHOLDER = "roommoveholder"; 
    public static final String KEY_ROOM = "room"; 

    public static final String KEY_ITEMMOVEHOLDER = "itemmoveholder"; 
    public static final String KEY_ITEMNAME = "itemname"; 
    public static final String KEY_ITEMVALUE = "itemvalue"; 
    public static final String KEY_ROOMHOLDER = "roomholder"; 

    public static final String KEY_MOVENAME = "movename"; 
    public static final String KEY_ID1 = "_id"; 
    public static final String KEY_ID2 = "_id"; 
    public static final String KEY_ID3 = "_id"; 
    public static final String KEY_ID4 = "_id"; 
    public static final String KEY_MOVEDATE = "movedate"; 

    private static final String DATABASE_NAME = "mymovingfriend"; 
    private static final int DATABASE_VERSION = 1; 

    public static final String KEY_SORTANDPURGE = "sortandpurge"; 
    public static final String KEY_RESEARCH = "research"; 
    public static final String KEY_CREATEMOVINGBINDER = "createmovingbinder"; 
    public static final String KEY_ORDERSUPPLIES = "ordersupplies"; 
    public static final String KEY_USEITORLOSEIT = "useitorloseit"; 
    public static final String KEY_TAKEMEASUREMENTS = "takemeasurements"; 
    public static final String KEY_CHOOSEMOVER = "choosemover"; 
    public static final String KEY_BEGINPACKING = "beginpacking"; 
    public static final String KEY_LABEL = "label"; 
    public static final String KEY_SEPARATEVALUES = "separatevalues"; 
    public static final String KEY_DOACHANGEOFADDRESS = "doachangeofaddress"; 
    public static final String KEY_NOTIFYIMPORTANTPARTIES = "notifyimportantparties"; 

    private static final String DATABASE_TABLE1 = "movingname"; 
    private static final String DATABASE_TABLE2 = "movingrooms"; 
    private static final String DATABASE_TABLE3 = "movingitems"; 
    private static final String DATABASE_TABLE4 = "todolist"; 

    public static final String CREATE_TABLE_1 = "CREATE TABLE " + DATABASE_TABLE1 + " (" + 
      KEY_ID1 + " INTEGER PRIMARY KEY AUTOINCREMENT," + 
      KEY_MOVEDATE + " TEXT NOT NULL, " + 
      KEY_MOVENAME + " TEXT NOT NULL);"; 

    public static final String CREATE_TABLE_2 = "CREATE TABLE " + DATABASE_TABLE2 + " (" + 
      KEY_ID2 + " INTEGER PRIMARY KEY AUTOINCREMENT," + 
      KEY_ROOMMOVEHOLDER + " TEXT NOT NULL, " + 
      KEY_ROOM + " TEXT NOT NULL);"; 

    public static final String CREATE_TABLE_3 = "CREATE TABLE " + DATABASE_TABLE3 + " (" + 
      KEY_ID3 + " INTEGER PRIMARY KEY AUTOINCREMENT," + 
      KEY_ITEMNAME + " TEXT NOT NULL, " + 
      KEY_ITEMVALUE + " TEXT NOT NULL, " + 
      KEY_ROOMHOLDER + " TEXT NOT NULL, " + 
      KEY_ITEMMOVEHOLDER + " TEXT NOT NULL);"; 

    public static final String CREATE_TABLE_4 = "CREATE TABLE " + DATABASE_TABLE4 + " (" + 
      KEY_ID4 + " INTEGER PRIMARY KEY AUTOINCREMENT," + 
      KEY_SORTANDPURGE + " TEXT NOT NULL, " + 
      KEY_RESEARCH + " INTEGER NOT NULL, " + 
      KEY_CREATEMOVINGBINDER + " TEXT NOT NULL, " + 
      KEY_ORDERSUPPLIES + " TEXT NOT NULL, " + 
      KEY_USEITORLOSEIT + " TEXT NOT NULL, " + 
      KEY_TAKEMEASUREMENTS + " TEXT NOT NULL, " + 
      KEY_CHOOSEMOVER + " TEXT NOT NULL, " + 
      KEY_BEGINPACKING + " TEXT NOT NULL, " + 
      KEY_LABEL + " TEXT NOT NULL, " + 
      KEY_SEPARATEVALUES + " TEXT NOT NULL, " + 
      KEY_DOACHANGEOFADDRESS + " TEXT NOT NULL, " + 
      KEY_NOTIFYIMPORTANTPARTIES + " TEXT NOT NULL);"; 

    private DbHelper ourHelper; 
    private final Context ourContext; 
    private SQLiteDatabase ourDatabase; 

    private static class DbHelper extends SQLiteOpenHelper{ 

     public DbHelper(Context context) { 
      super(context, DATABASE_NAME, null, DATABASE_VERSION); 
      // TODO Auto-generated constructor stub 
     } 

     @Override 
     public void onCreate(SQLiteDatabase db) { 
      // TODO Auto-generated method stub 
      db.execSQL(CREATE_TABLE_1); 
      db.execSQL(CREATE_TABLE_2); 
      db.execSQL(CREATE_TABLE_3); 
      db.execSQL(CREATE_TABLE_4); 
     } 

     @Override 
     public void onUpgrade(SQLiteDatabase db, int oldversion, int newversion) { 
      // TODO Auto-generated method stub 
      db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE1); 
      db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE2); 
      db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE3); 
      db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE4); 
      onCreate(db); 
     } 
    } 

    public SQLHandler(Context c){ 
     ourContext = c; 
    } 

    public SQLHandler open() throws SQLException{ 
     ourHelper = new DbHelper(ourContext); 
     ourDatabase = ourHelper.getWritableDatabase(); 
     return this; 
    } 

    public void close(){ 
     ourHelper.close(); 
    } 

    public long createMove(String smovename){ 
     ContentValues cv = new ContentValues(); 
     cv.put(KEY_MOVENAME, smovename); 
     return ourDatabase.insert(DATABASE_TABLE1, null, cv); 
    } 

    public long addRooms(String sroommoveholder, String sroom){ 
     ContentValues cv = new ContentValues(); 
     cv.put(KEY_ROOMMOVEHOLDER, sroommoveholder); 
     cv.put(KEY_ROOM, sroom); 
     return ourDatabase.insert(DATABASE_TABLE2, null, cv); 
    } 

    public long addItems(String sitemmoveholder, String sroomholder, String sitemname, String sitemvalue){ 
     ContentValues cv = new ContentValues(); 
     cv.put(KEY_ITEMMOVEHOLDER, sitemmoveholder); 
     cv.put(KEY_ROOMHOLDER, sroomholder); 
     cv.put(KEY_ITEMNAME, sitemname); 
     cv.put(KEY_ITEMVALUE, sitemvalue); 
     return ourDatabase.insert(DATABASE_TABLE3, null, cv); 
    } 

    public long todoList(String todoitem){ 
     ContentValues cv = new ContentValues(); 
     cv.put(todoitem, "Done"); 
     return ourDatabase.insert(DATABASE_TABLE4, null, cv); 
    } 

    public Cursor getMove(){ 
     String[] columns = new String[]{KEY_ID1, KEY_MOVENAME}; 
     Cursor cursor = ourDatabase.query(DATABASE_TABLE1, columns, null, null, null, null, null); 
     return cursor; 
    } 

} 

et

ListMovingNames.java

public class ListMovingNames extends Activity { 
    ListView MoveList; 
    SQLHandler SQLHandlerview; 
    Cursor cursor; 
    Button addMove; 
    EditText etAddMove; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.selectorcreatemove); 

     addMove = (Button) findViewById(R.id.bAddMove); 
     etAddMove = (EditText) findViewById(R.id.etMoveName); 

     MoveList = (ListView) findViewById(R.id.lvMoveItems); 
     SQLHandlerview = new SQLHandler(this); 

     SQLHandlerview = new SQLHandler(ListMovingNames.this); 
     SQLHandlerview.open(); 

     cursor = SQLHandlerview.getMove(); 
     startManagingCursor(cursor); 

     String[] from = new String[]{SQLHandler.KEY_MOVENAME}; 
     int[] to = new int[]{R.id.text}; 

     SimpleCursorAdapter cursorAdapter = new SimpleCursorAdapter(this, R.layout.row, cursor, from, to); 
     MoveList.setAdapter(cursorAdapter); 
     SQLHandlerview.close(); 

     addMove.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
       // TODO Auto-generated method stub 
        try { 
         String ssmoveName = etAddMove.getText().toString(); 
         SQLHandler entry = new SQLHandler(ListMovingNames.this); 
         entry.open(); 
         entry.createMove(ssmoveName); 
         entry.close(); 
        } catch (SQLException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } 
      } 
     }); 
    } 

} 

est-il une méthode pour cela? s'il vous plaît aider

Répondre

0

Vous essayez d'insérer un élément dans le tableau 1, sans réglage « MOVEDATE » et qui ne peut être nul ... Je pense que c'est la contrainte, il est vous embêter à propos ...

EDIT: Essayez cette méthode et voyez si cela fonctionne

public long createMove(String smovename){ 
    ContentValues cv = new ContentValues(); 
    cv.put(KEY_MOVENAME, smovename); 
    cv.put(KEY_MOVEDATE, "something"); 
    return ourDatabase.insert(DATABASE_TABLE1, null, cv); 
} 
+0

whoa! tu as raison! merci beaucoup l'homme! donc si je veux rendre KEY_MOVEDATE vide, je devrais supprimer le droit NOT NULL? – philip

+0

Oui, ça devrait le résoudre ... – user1504495

Questions connexes