2016-01-02 7 views
3

Данные, которые мы вставляем в таблицу, в первый раз, когда она вставлена ​​во второй раз (например, вторая запись), это не так, что должно быть возможно причины, если вы не можете прочитать и понять мой код, тогда мы сможем обсудить причины:SQlite: данные вводятся только в первый раз в таблицу, а второй раз это не

package com.example.sarahn.locationactivity; 

import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.SQLException; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 
import android.widget.Toast; 


public class HelperAdaptor extends SQLiteOpenHelper{ 
public static final String DATABASE_NAME = "mmhdatabase"; 
public static final String TABLE_NAME3 = "timetable"; 
public static final int DATABASE_VERSION = 2; 
public static final String NAME1 = "_timeprofilename"; 
public static final String TIME_PROFILE = "selecteddtimeprofile"; 
public static final String START_HOUR = "starthour"; 
public static final String END_HOUR = "endhour"; 
public static final String START_MINUTE = "startmin"; 
public static final String END_MINUTE = "endmin"; 
public static final String CREATE_TABLE3 = " CREATE TABLE " +TABLE_NAME3+ " ("+NAME1+ " STRING PRIMARY KEY, " +START_HOUR+ " INTEGER, " +END_HOUR+ "  INTEGER," +START_MINUTE+ " INTEGER, " +END_MINUTE+ " INTEGER, "   +TIME_PROFILE+ " INTEGER); " ; 
public static final String DROP_TABLE1 = " DROP TABLE IF EXISTS "   +TABLE_NAME3; 


public Context context; 

public HelperAdaptor (Context context) { 
    super(context,DATABASE_NAME, null, DATABASE_VERSION); 
    this.context= context; 

} 


@Override 
public void onCreate(SQLiteDatabase db) { 


    try { 

     db.execSQL(CREATE_TABLE3); 

    }catch (SQLException e) 
    { 

    } 

} 

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

    try { 

     db.execSQL(DROP_TABLE1); 


     onCreate(db); 


    }catch (SQLException e) 
    { 

    } 

} 


public boolean insertdatatime(String nametime, int hrstart , int hrend ,  int minstart, int minend, int pr) { 

    SQLiteDatabase db = this.getWritableDatabase(); 
    ContentValues contentValues1 = new ContentValues(); 
    contentValues1.put(this.NAME1, nametime); 
    contentValues1.put(this.START_HOUR, hrstart); 
    contentValues1.put(this.END_HOUR, hrend); 
    contentValues1.put(this.START_MINUTE, minstart); 
    contentValues1.put(this.END_MINUTE, minend); 
    contentValues1.put(this.TIME_PROFILE, pr); 

    long id = db.insert(this.TABLE_NAME3, null, contentValues1); 
    if(id == -1) 
    { 
     return false; 
    } 
    else { 
     return true; 
    } 

} 


} 
+0

Первый раз это создание, второе время - обновление. –

ответ

0

Возможно, это проблема?

public static final String CREATE_TABLE3 = " CREATE TABLE " +TABLE_NAME3+ " ("+NAME1+ " STRING PRIMARY KEY, " +START_HOUR+ " INTEGER, " +END_HOUR+ "  INTEGER," +START_MINUTE+ " INTEGER, " +END_MINUTE+ " INTEGER, "   +TIME_PROFILE+ " INTEGER); " ; 

в

public static final String CREATE_TABLE3 = " CREATE TABLE IF NOT EXISTS " +TABLE_NAME3+ " ("+NAME1+ " STRING PRIMARY KEY, " +START_HOUR+ " INTEGER, " +END_HOUR+ "  INTEGER," +START_MINUTE+ " INTEGER, " +END_MINUTE+ " INTEGER, "   +TIME_PROFILE+ " INTEGER); " ; 

Это, как правило, ошибка, чтобы попытаться создать новую таблицу в базе данных , которая уже содержит таблицу, индекс или вид одного и того же имени. Однако, если предложение «ЕСЛИ НЕ СУЩЕСТВУЕТ» указано как часть инструкции CREATE TABLE , а таблица или представление с таким же именем уже существует , команда CREATE TABLE просто не имеет эффекта (и сообщение об ошибке не возвращается ). Ошибка по-прежнему возвращается, если таблица не может создать из-за существующего индекса, даже если указан параметр «ЕСЛИ НЕ СУЩЕСТВУЕТ» .

 Смежные вопросы

  • Нет связанных вопросов^_^