Member 14884380 Ответов: 1

Таблица contact_info не имеет столбца с именем email (код 1): , при компиляции: INSERT into contact_info(email, name, contact_id) VALUES(? , ? , ? ) я получаю эту ошибку


package com.example.exe_app;

public class contactcontract {
    private  contactcontract() {}

        public static class contactEntry{
        public static final String TABLE_NAME="contact_info";
            public static final String CONTACT_ID="contact_id";
            public static final String NAME="name";
            public static final String EMAIL="email";

        }
}



package com.example.exe_app;

import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class ContactDbHelper extends SQLiteOpenHelper {
    public static final String DATABASE_NAME="contact_db";
    public static final int DATABASE_VERSION=1;
    public static final String CREATE_TABLE= "create table "+ contactcontract.contactEntry.TABLE_NAME+
            "("+contactcontract.contactEntry.CONTACT_ID+" number,"+contactcontract.contactEntry.NAME+" text,"+contactcontract.contactEntry.EMAIL+" text);";
    public static final String DROP_TABLE="drop table if exists "+contactcontract.contactEntry.TABLE_NAME;

    public ContactDbHelper(Context context)
    {
        super(context,DATABASE_NAME, null,DATABASE_VERSION);
        Log.d("databse crestion ", "databse created...");
    }

    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
     sqLiteDatabase.execSQL(CREATE_TABLE);
        Log.d("databse crestion ", "table is  created...");

    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
 sqLiteDatabase.execSQL(DROP_TABLE);
 onCreate(sqLiteDatabase);
    }
    public void addContact(int id, String name,String email,SQLiteDatabase databse){
        ContentValues contentValues=new ContentValues();
        contentValues.put(contactcontract.contactEntry.CONTACT_ID,id);
        contentValues.put(contactcontract.contactEntry.NAME,name);
        contentValues.put(contactcontract.contactEntry.EMAIL,email);
        databse.insert(contactcontract.contactEntry.TABLE_NAME,null,contentValues);
        Log.d("databse crestion ", "one row is inserted...");
    }
}


package com.example.exe_app;

import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class ContactDbHelper extends SQLiteOpenHelper {
    public static final String DATABASE_NAME="contact_db";
    public static final int DATABASE_VERSION=1;
    public static final String CREATE_TABLE= "create table "+ contactcontract.contactEntry.TABLE_NAME+
            "("+contactcontract.contactEntry.CONTACT_ID+" number,"+contactcontract.contactEntry.NAME+" text,"+contactcontract.contactEntry.EMAIL+" text);";
    public static final String DROP_TABLE="drop table if exists "+contactcontract.contactEntry.TABLE_NAME;


    public ContactDbHelper(Context context)
    {
        super(context,DATABASE_NAME, null,DATABASE_VERSION);
        Log.d("databse crestion ", "databse created...");
    }

    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
     sqLiteDatabase.execSQL(CREATE_TABLE);
        Log.d("databse crestion ", "table is  created...");

    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
 sqLiteDatabase.execSQL(DROP_TABLE);
 onCreate(sqLiteDatabase);
    }
    public void addContact(int id, String name,String email,SQLiteDatabase databse){
        ContentValues contentValues=new ContentValues();
        contentValues.put(contactcontract.contactEntry.CONTACT_ID,id);
        contentValues.put(contactcontract.contactEntry.NAME,name);
        contentValues.put(contactcontract.contactEntry.EMAIL,email);
        databse.insert(contactcontract.contactEntry.TABLE_NAME,null,contentValues);
        Log.d("databse crestion ", "one row is inserted...");
    }

}



package com.example.exe_app;

public class contactcontract {
    private  contactcontract() {}

        public static class contactEntry{
        public static final String TABLE_NAME="contact_info";
            public static final String CONTACT_ID="contact_id";
            public static final String NAME="name";
            public static final String EMAIL="email";

        }

}


Что я уже пробовал:

я попытался поставить пробел между текстом имени и текстом электронной почты

Richard MacCutchan

Используйте отладчик для проверки сгенерированных инструкций. Также попробуйте использовать командный инструмент SQLite для отображения схемы созданной базы данных.

1 Ответов

Рейтинг:
0

Andre Oosthuizen

Из того, что я смог собрать в вашем коде при вставке, вы ссылаетесь только на id, хотя ваше имя поля

contact_id