最后一列被SQLite忽略或不创建

时间:2017-12-03 21:53:56

标签: android sqlite android-sqlite

我在android studio中遇到了严重的问题! 实际上,我已经创建了一个包含一些列的表,但是在执行insert方法时,logcat会返回一个错误,通知最后一列"我将其命名为hours"表中存在!!!“

logcat错误:   Logcat error

在DataBaseHelper.java中创建表和数据库的代码:

public class DataBaseHelper extends SQLiteOpenHelper 
{

static final String Tag="MyActivite";
public static final String DataBaseName="Bus";
public static final String TABLE_Name="LigneDestination";
public static final String Col_2="ligne";
public static final String Col_3="gareDéparts";
public static final String Col_4="destination";
public static final String Col_5="hours";

public static final String Table_Creation="CREATE TABLE "+TABLE_Name+"                     
(id INTEGER PRIMARY KEY  AUTOINCREMENT, " +
""+Col_2+" INTEGER, " +Col_3+ " TEXT, "+Col_4+" TEXT, 
"+Col_5+"TEXT);";


public DataBaseHelper(Context context) {
super(context, DataBaseName, null, 1);
}

@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(Table_Creation);


}

@Override
public void onUpgrade(SQLiteDatabase db, int i, int i1) {
db.execSQL("Drop TABLE IF EXISTS "+TABLE_Name);
onCreate(db);
}


boolean insertData(int ligne ,String gare_depart,String destination 
,String hours ){



SQLiteDatabase db=this.getWritableDatabase();
ContentValues values =new ContentValues();

values.put(Col_2,ligne);
values.put(Col_3,gare_depart);
values.put(Col_4,destination);
values.put(Col_5,hours);
long result=db.insert(TABLE_Name,null,values);

if(result==-1){
Log.e(Tag,"l'insertion est échoué");
return false;}
else {
Log.i(Tag,"l'insertion est réussi");
return true;
}

}}

你能帮帮我吗?

1 个答案:

答案 0 :(得分:1)

您的问题是由于列名和列类型之间省略了空格。因此,列名 hoursTEXT 将不会小时,因此找不到小时列的原因。

修复: -

  • 1将public static final String Table_Creation="CREATE TABLE "+TABLE_Name+" (id INTEGER PRIMARY KEY AUTOINCREMENT, " +""+Col_2+" INTEGER, " +Col_3+ " TEXT, "+Col_4+" TEXT,"+Col_5+"TEXT);";更改为public static final String Table_Creation="CREATE TABLE "+TABLE_Name+" (id INTEGER PRIMARY KEY AUTOINCREMENT, " +Col_2+" INTEGER, " +Col_3+ " TEXT, "+Col_4+" TEXT,"+Col_5+" TEXT);";,即在TEXT之前为Col_5添加空格(同时删除id列定义和Col_2定义之间无用的+“”+)。

  • 2执行以下一次: -

    • 删除应用程序的数据。
    • 卸载应用程序。
    • 将数据库版本从1增加到2,即
      • super(context, DataBaseName, null, 1);更改为super(context, DataBaseName, null, 2);
  • 3重新运行应用程序。