3

我们在表中插入的数据第一次插入,而第二次插入(如第二次)它没有,如果您无法阅读和理解我的代码,应该是什么可能的原因,然后我们可以讨论原因

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;
    }

}


}
4

1 回答 1

1

可能是这个问题?

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); "  ;

尝试在已包含同名表、索引或视图的数据库中创建新表通常是错误的。但是,如果“IF NOT EXISTS”子句被指定为 CREATE TABLE 语句的一部分,并且同名的表或视图已经存在,则 CREATE TABLE 命令根本不起作用(并且不返回错误消息)。如果由于现有索引而无法创建表,即使指定了“IF NOT EXISTS”子句,仍然会返回错误。

于 2016-01-02T06:22:24.743 回答