[英]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.