繁体   English   中英

在数据库中插入新元素时,sqlite异常

[英]sqlite exception when insert new element in database

我在android中使用sqlite出现此错误

android.database.sqlite.SQLiteException:表格老师没有名为password(代码1):的列,而在编译时:INSERT INTO Teacher(name,email,password,id)VALUES(?,?,?,?)

我将数据正确发送到DB类

这是mycode

package com.example.cm.myapplication.Model;

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


public class DatabaseHandler extends SQLiteOpenHelper {


    // All Static variables
    // Database Version
    private static final int DATABASE_VERSION = 1;

    // Database Name
    private static final String DATABASE_TEACHER_NAME = "CourseManager";

    Context context;
    // teacher table name
    private static final String TABLE_TEATCHER = "teacher";

    // person Table Columns names
    private static final String TEATCHER_KEY_ID = "id";
    private static final String TEATCHER_KEY_NAME = "name";
    private static final String TEATCHER_KEY_EMAIL = "email";
    private static final String TEATCHER_KEY_PASSWORD = "password";


    // teacher student name
    private static final String TABLE_STUDENT = "student";

    // person Table Columns names
    private static final String STUDENT_KEY_ID = "id";
    private static final String STUDENT_KEY_NAME = "name";
    private static final String STUDENT_KEY_EMAIL = "email";
    private static final String STUDENT_KEY_PASSWORD = "password";

    public DatabaseHandler(Context context) {
        super(context, DATABASE_TEACHER_NAME, null, DATABASE_VERSION);
        this.context = context;
    }

    // Creating Tables
    @Override
    public void onCreate(SQLiteDatabase db) {
        String CREATE_TEATCHER_TABLE = "CREATE TABLE " + TABLE_TEATCHER + "("
                + TEATCHER_KEY_ID + " INTEGER PRIMARY KEY," + TEATCHER_KEY_NAME + " TEXT,"
                + TEATCHER_KEY_EMAIL + " TEXT"
                + TEATCHER_KEY_PASSWORD + " TEXT" +")";


        String CREATE_STUDENT_TABLE = "CREATE TABLE " + TABLE_STUDENT + "("
                + STUDENT_KEY_ID + " INTEGER PRIMARY KEY," + STUDENT_KEY_NAME + " TEXT,"
                + STUDENT_KEY_PASSWORD + " TEXT"
                + STUDENT_KEY_EMAIL + " TEXT" +")";

        db.execSQL(CREATE_TEATCHER_TABLE);
        db.execSQL(CREATE_STUDENT_TABLE);
    }

    // Upgrading database
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // Drop older table if existed
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_TEATCHER);
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_STUDENT);

        // Create tables again
        onCreate(db);
    }


    // Adding new doctor table
    public long addTeacher(Doctor doctor) {
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();
        values.put(TEATCHER_KEY_ID, doctor.getId());
        values.put(TEATCHER_KEY_EMAIL, doctor.getEmail());
        values.put(TEATCHER_KEY_NAME, doctor.getName());
        values.put(TEATCHER_KEY_PASSWORD, doctor.getPass());

        // Inserting Row
        long i = db.insert(TABLE_TEATCHER, null, values);

        db.close(); // Closing database connection
        return i ;
    }
    // Adding new student
    public long addStudent(Student student) {
        SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
        values.put(STUDENT_KEY_ID, student.getId());
        values.put(STUDENT_KEY_EMAIL, student.getEmail());
        values.put(STUDENT_KEY_NAME, student.getName());
        values.put(STUDENT_KEY_PASSWORD, student.getPass());

        // Inserting Row
        long i = db.insert(TABLE_STUDENT, null, values);

        db.close(); // Closing database connection
        return i;
    }

    public int getDoctorcount(){

        String countQuery = "SELECT COUNT(*) FROM " +TABLE_TEATCHER;
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.rawQuery(countQuery, null);
        cursor.moveToFirst();
        Integer count= cursor.getCount();
        cursor.close();

        // return count
        return count;
    }
    public int getStudentcount(){
        String countQuery = "SELECT COUNT(*) FROM " +TABLE_STUDENT;
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.rawQuery(countQuery, null);
        cursor.moveToFirst();
        Integer count= cursor.getCount();
        cursor.close();

        // return count
        return count;
    }
}

我认为create语句中的错误,请检查此

String CREATE_TEATCHER_TABLE = "CREATE TABLE " + TABLE_TEATCHER + "("
                + TEATCHER_KEY_ID + " INTEGER PRIMARY KEY," + TEATCHER_KEY_NAME + " TEXT,"
                + TEATCHER_KEY_EMAIL + " TEXT"
                + TEATCHER_KEY_PASSWORD + " TEXT" +")";

在TEATCHER_KEY_EMAIL之后的上述声明中,您已将TEXT用于该列,但是您忘记在TEXT之后添加“,”。

使用以下语句,然后重试

String CREATE_TEATCHER_TABLE = "CREATE TABLE " + TABLE_TEATCHER + "("
                + TEATCHER_KEY_ID + " INTEGER PRIMARY KEY," + TEATCHER_KEY_NAME + " TEXT,"
                + TEATCHER_KEY_EMAIL + " TEXT,"
                + TEATCHER_KEY_PASSWORD + " TEXT" +")";

在TEATCHER_KEY_EMAIL和STUDENT_KEY_PASSWORD字段的TABLE_TEATCHER和TABLE_STUDENT表的TEXT之后添加“,”

String CREATE_TEATCHER_TABLE = "CREATE TABLE " + TABLE_TEATCHER + "("
            + TEATCHER_KEY_ID + " INTEGER PRIMARY KEY," + TEATCHER_KEY_NAME + " TEXT,"
            + TEATCHER_KEY_EMAIL + " TEXT,"
            + TEATCHER_KEY_PASSWORD + " TEXT" +")";


String CREATE_STUDENT_TABLE = "CREATE TABLE " + TABLE_STUDENT + "("
        + STUDENT_KEY_ID + " INTEGER PRIMARY KEY," + STUDENT_KEY_NAME + " TEXT,"
        + STUDENT_KEY_PASSWORD + " TEXT,"
        + STUDENT_KEY_EMAIL + " TEXT" +")";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM