将数据插入数据库时​​出错

时间:2016-04-01 12:56:09

标签: android sqlite android-sqlite

将数据插入sqlite数据库时出错。这是我的查询。有什么问题。

我无法摆脱这种局面。我认为错误是因为创建表格中的空间,我需要进行更改。

@Override
    public void onCreate(SQLiteDatabase db) {
        String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "("
                + KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT,"
                + KEY_PH_NO + " TEXT," + KEY_MACID + " TEXT" + ")";
        db.execSQL(CREATE_CONTACTS_TABLE);
    }

这是我得到的错误。

Error inserting macid=benbena phone_number=01-04-2016 17:32:31 PM name=testlock1@acttv.in android.database.sqlite.SQLiteException: table contacts has no column named macid (code 1): , while compiling: INSERT INTO contacts(macid,phone_number,name) VALUES (?,?,?)

1 个答案:

答案 0 :(得分:0)

建议先创建一个Contact Class来轻松处理数据。但是,如果没有这个,我将如何完成数据库输入任务:

自定义SQLiteOpenHelper类:

public class DBHandlerTest extends SQLiteOpenHelper {

    public static final String DATABASE_NAME = "database.db";

    public static final int DATABASE_VERSION = 1;

    public static final String TABLE_CONTACTS = "contacts";

    public static final String KEY_ID = "id";
    public static final String KEY_NAME = "name";
    public static final String KEY_PH_NO = "phone_number";
    public static final String KEY_MACID = "macid";


    public static final String CREATE_CONTACTS_TABLE =
            "CREATE TABLE " + TABLE_CONTACTS + "("
                    + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
                    + KEY_NAME + " TEXT(255) NOT NULL, "
                    + KEY_PH_NO + " TEXT(255) NOT NULL, "
                    + KEY_MACID + " TEXT(255) NOT NULL" + ")";


    public DBHandlerTest(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }


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

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_CONTACTS);
        //re-create db
        onCreate(db);
    }

    public void insertContact(String name, String phoneNumber, String macID) {

        //create db instance
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues contactValues = new ContentValues();

        //get the values
        contactValues.put(KEY_NAME, name);
        contactValues.put(KEY_PH_NO, phoneNumber);
        contactValues.put(KEY_MACID, macID);

        //insert row into db
        db.insert(TABLE_CONTACTS, null, contactValues);
        db.close();

    }

}

实施方法:

DBHandlerTest db = new DBHandlerTest(this);
db.insertContact("test@test.com", "0800-123456", "test_id"); 
db.close();