2012-03-19 10 views
0

を、私は値を挿入しようとしたとき、次のように、私は例外を発見した。..Androidのsqliteの:値を挿入エラー:データベースを作成した後SQLiteの制約例外

android.database.sqlite.SQLiteConstraintException: error code 19: constraint failed 

なぜこれが起こっている私にはわからない... 誰でも..事前に ありがとう私を助けてください... メインクラスとヘルパークラスを以下に示します。..

データベーススキーマで
public class Database extends Activity{ 

    public static final String MYDATABASE_NAMEEE = "MY_DATABASE_RESTAURANT"; 
    public static final int MYDATABASE_VERSION = 4; 
    public static final String MYDATABASE_TABLE = "Restaurant"; 
    public static final String KEY_ID = "_id"; 
    public static final String KEY_CONTENT1 = "Restaurant_name"; 
    public static final String KEY_CONTENT2 = "Ac_or_nonac"; 
    public static final String KEY_CONTENT3 = "Total_chairs"; 
    public static final String KEY_CONTENT4 = "Reserved_chairs"; 
    public static final String KEY_CONTENT5 = "Date"; 
    public static final String KEY_CONTENT6 = "fromTime"; 
    public static final String KEY_CONTENT7 = "toTime"; 
    public static final String KEY_CONTENT8 = "Name"; 
    public static final String KEY_CONTENT9 = "Contact_Number"; 
    public static final String KEY_CONTENT10 = "Table_id"; 

    private Helper helper; 
    private SQLiteDatabase database; 

    Button button_submit; 
    ListView listView; 
    EditText editText_name,editText_number,editText_seats,editText_date,editText_fromtime,editText_totime; 
    SimpleCursorAdapter cursorAdapter; 
    Cursor cursor; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.databaselist); 

     listView = (ListView) findViewById(R.id.listView1); 
     button_submit = (Button) findViewById(R.id.button_submit); 
     editText_date = (EditText) findViewById(R.id.editText_date); 
     editText_fromtime = (EditText) findViewById(R.id.editText_fromtime); 
     editText_name = (EditText) findViewById(R.id.editText_name); 
     editText_number = (EditText) findViewById(R.id.editText_contactnumber); 
     editText_seats = (EditText) findViewById(R.id.editText_seatsneeded); 
     editText_totime = (EditText) findViewById(R.id.editText_totime); 


     helper = new Helper(this, MYDATABASE_NAMEEE, null, MYDATABASE_VERSION); 
     database = helper.getWritableDatabase(); 

     cursor = database.query(MYDATABASE_TABLE, null,null, null, null, null, null); 
     String[] from=new String[]{KEY_ID,KEY_CONTENT3,KEY_CONTENT4,KEY_CONTENT5 
       ,KEY_CONTENT6,KEY_CONTENT7,KEY_CONTENT8,KEY_CONTENT9,KEY_CONTENT10}; 
     int[] to=new int[]{R.id.textView_id,R.id.textView_totalno_ofseats,R.id.textView_no_ofseatsreserved,R.id.textView_date 
      ,R.id.textView_timefrom,R.id.textView_totime,R.id.textView_name,R.id.textView_contactnumber,R.id.textView_tableid}; 
     cursorAdapter=new SimpleCursorAdapter(getApplicationContext(), R.layout.databasetext, cursor, from, to); 
     listView.setAdapter(cursorAdapter); 


     button_submit.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View v) { 
       // TODO Auto-generated method stub 
      String date = editText_date.getText().toString(); 
      String fromtime = editText_fromtime.getText().toString(); 
      String name = editText_name.getText().toString(); 
      String number = editText_number.getText().toString(); 
      String seats = editText_seats.getText().toString(); 
      String totime = editText_totime.getText().toString(); 

      ContentValues cv1 = new ContentValues(); 
      cv1.put(KEY_CONTENT5, date); 
      cv1.put(KEY_CONTENT6, fromtime); 
      cv1.put(KEY_CONTENT8, name); 
      cv1.put(KEY_CONTENT9, number); 
      cv1.put(KEY_CONTENT4, seats); 
      database.insert(MYDATABASE_TABLE, null, cv1); 
      //cursor.requery(); 

      editText_date.setText(""); 
      editText_fromtime.setText(""); 
      editText_name.setText(""); 
      editText_number.setText(""); 
      editText_seats.setText(""); 
      editText_totime.setText(""); 
      filldata(); 

      } 
     }); 
    } 
    private void filldata() { 
     // TODO Auto-generated method stub 
     Cursor cursor = database.query(MYDATABASE_TABLE, null, 
       null, null, null, null,null); 

     String[] from=new String[]{KEY_ID,KEY_CONTENT3,KEY_CONTENT4,KEY_CONTENT5 
       ,KEY_CONTENT6,KEY_CONTENT7,KEY_CONTENT8,KEY_CONTENT9,KEY_CONTENT10}; 
     int[] to=new int[]{R.id.textView_id,R.id.textView_totalno_ofseats,R.id.textView_no_ofseatsreserved,R.id.textView_date 
      ,R.id.textView_timefrom,R.id.textView_totime,R.id.textView_name,R.id.textView_contactnumber,R.id.textView_tableid}; 
     cursorAdapter=new SimpleCursorAdapter(getApplicationContext(), R.layout.databasetext, cursor, from, to); 
     listView.setAdapter(cursorAdapter); 

    } 
} 




public class Helper extends SQLiteOpenHelper{ 

    public static final String MYDATABASE_TABLE = "Restaurant"; 
    public static final String KEY_ID = "_id"; 
    public static final String KEY_CONTENT1 = "Restaurant_name"; 
    public static final String KEY_CONTENT2 = "Ac_or_nonac"; 
    public static final String KEY_CONTENT3 = "Total_chairs"; 
    public static final String KEY_CONTENT4 = "Reserved_chairs"; 
    public static final String KEY_CONTENT5 = "Date"; 
    public static final String KEY_CONTENT6 = "fromTime"; 
    public static final String KEY_CONTENT7 = "toTime"; 
    public static final String KEY_CONTENT8 = "Name"; 
    public static final String KEY_CONTENT9 = "Contact_Number"; 
    public static final String KEY_CONTENT10 = "Table_id"; 


    private static final String SCRIPT_CREATE_DATABASE = 
      "create table " + MYDATABASE_TABLE + " (" 
      + KEY_ID + " integer primary key, " 
      + KEY_CONTENT1 + " text not null, " 
      + KEY_CONTENT2 + " text not null, " 
      + KEY_CONTENT3 + " integer not null, " 
      + KEY_CONTENT4 + " integer not null, " 
      + KEY_CONTENT5 + " text not null, " 
      + KEY_CONTENT6 + " text not null, " 
      + KEY_CONTENT7 + " text not null, " 
      + KEY_CONTENT8 + " text not null, " 
      + KEY_CONTENT9 + " text not null, " 
      + KEY_CONTENT10 + " text not null) "; 


    public Helper(Context context, String name, CursorFactory factory, 
      int version) { 
     super(context, name, factory, version); 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     // TODO Auto-generated method stub 
     db.execSQL(SCRIPT_CREATE_DATABASE); 

    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     // TODO Auto-generated method stub 

    } 
} 

答えて

1

あなたは、NOT NULLとしてすべてを宣言したが、あなたの挿入あなたのドンで〜を持っているすべての分野で高い評価を得ています。フィールドに何を挿入するか分からないため、SQLiteは例外をスローします。 SQliteがデフォルトとしてヌル値を挿入するか、すべてのフィールドに値を追加できるように、NOT NULL制約を削除します。

0

ここに一意でない値を挿入しないようにしてください。 挿入物の "not null"値をスキップしないようにしてください。 not null列の値を指定するか、デフォルト値を定義します。

KEY_CONTENT1などを異なる値の2つの異なるクラスで定義しています。繰り返さないでください。あなたはそれらのための静的コンテキストを使用しているので、それらを1つのクラスで定義し、静的コンテキストを使用して他のクラスを取得します。

+0

ありがとうのFLOは、ラジュとOrlymee.Iは、変更を行ったが、それでも同じエラーが –

1

は..youがして...あらゆる分野にいくつかのデータを送信するので、それは

2

を必要とされていないデータフィールドからではないnul1を削除する必要がありますないヌルとして宣言するフィールド上のデータベース..becauseの定義を修正しますあなたがテーブルにユニーク作る、すなわち、有効なプライマリキーで行を挿入していることを確認(私はあなたが主キーがすでに定義されている行を挿入しようとしているという理由だけで、あなたがこのexeceptionを持っていると思います同じデータベーステーブル)。あなたが言っているよう

+0

。これだった私の場合...おかげであります – Juan

関連する問題