繁体   English   中英

在Android上的SQLite中插入数据时出错

[英]Error in inserting data in sqlite on android

嗨,我正在创建注册表,因为我需要将所有数据存储到sqlite。 以此为参考。 当我将数据插入sqlite时,我在logcat中收到此错误

01-24 12:51:43.825: E/SQLiteLog(23749): (1) table register has no column named last_name
01-24 12:51:43.855: E/SQLiteDatabase(23749): Error inserting date_of_birth=24/Jan/2014 last_name=V gender=Female midle_name=Fg first_name=B marital_stat=Single Password=gybyh
01-24 12:51:43.855: E/SQLiteDatabase(23749): android.database.sqlite.SQLiteException: table register has no column named last_name (code 1): , while compiling: INSERT INTO register(date_of_birth,last_name,gender,midle_name,first_name,marital_stat,Password) VALUES (?,?,?,?,?,?,?)
01-24 12:51:43.855: E/SQLiteDatabase(23749):    at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
01-24 12:51:43.855: E/SQLiteDatabase(23749):    at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:1013)
01-24 12:51:43.855: E/SQLiteDatabase(23749):    at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:624)
01-24 12:51:43.855: E/SQLiteDatabase(23749):    at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
01-24 12:51:43.855: E/SQLiteDatabase(23749):    at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
01-24 12:51:43.855: E/SQLiteDatabase(23749):    at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
01-24 12:51:43.855: E/SQLiteDatabase(23749):    at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1467)
01-24 12:51:43.855: E/SQLiteDatabase(23749):    at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1339)
01-24 12:51:43.855: E/SQLiteDatabase(23749):    at com.DatabaseHandler.addRegister(DatabaseHandler.java:91)
01-24 12:51:43.855: E/SQLiteDatabase(23749):    at com.Signup_patient$4.onClick(Signup_patient.java:148)
01-24 12:51:43.855: E/SQLiteDatabase(23749):    at android.view.View.performClick(View.java:4191)
01-24 12:51:43.855: E/SQLiteDatabase(23749):    at android.view.View$PerformClick.run(View.java:17229)
01-24 12:51:43.855: E/SQLiteDatabase(23749):    at android.os.Handler.handleCallback(Handler.java:615)
01-24 12:51:43.855: E/SQLiteDatabase(23749):    at android.os.Handler.dispatchMessage(Handler.java:92)
01-24 12:51:43.855: E/SQLiteDatabase(23749):    at android.os.Looper.loop(Looper.java:137)
01-24 12:51:43.855: E/SQLiteDatabase(23749):    at android.app.ActivityThread.main(ActivityThread.java:4960)
01-24 12:51:43.855: E/SQLiteDatabase(23749):    at java.lang.reflect.Method.invokeNative(Native Method)
01-24 12:51:43.855: E/SQLiteDatabase(23749):    at java.lang.reflect.Method.invoke(Method.java:511)
01-24 12:51:43.855: E/SQLiteDatabase(23749):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
01-24 12:51:43.855: E/SQLiteDatabase(23749):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
01-24 12:51:43.855: E/SQLiteDatabase(23749):    at dalvik.system.NativeStart.main(Native Method)

这是我用来将数据插入数据库的编码

                sFirstname = Signup_patient_FirstName.getText().toString();
                sMidlename = Signup_patient_MidleName.getText().toString();
                sLastname = Signup_patient_LastName.getText().toString();
                sDateofbirth = Signup_patient_DateofBirth.getText().toString();
                sGender = Signup_patient_txtGender.getText().toString();
                sMaritalStatus = Signup_patient_txtMarital_Status.getText().toString();
                sEmail = Signup_patient_Emailid.getText().toString();
                sPassword = Signup_patient_Password.getText().toString();


                //adding a database
                 DatabaseHandler db = new DatabaseHandler(Signup_patient.this);

                db.addRegister(new Register_values(sFirstname, sMidlename,
                        sLastname, sDateofbirth, sGender, sMaritalStatus,
                        sEmail, sPassword));

这是我的数据库类

public class DatabaseHandler extends SQLiteOpenHelper {

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

    // Database Name
    private static final String DATABASE_NAME = "registerManager";

    // Register table name
    private static final String TABLE_REGISTER = "register";

    // Register Table Columns names
    private static final String KEY_ID = "id";
    private static final String KEY_FIRST_NAME = "first_name";
    private static final String KEY_MIDLE_NAME = "midle_name";
    private static final String KEY_LAST_NAME = "last_name";
    private static final String KEY_DOB = "date_of_birth";
    private static final String KEY_GENDER = "gender";
    private static final String KEY_MARITAL_STAT = "marital_stat";
    private static final String KEY_EMAIL = "email";
    private static final String KEY_PASSWORD = "Password";

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

    // Creating Tables
    @Override
    public void onCreate(SQLiteDatabase db) {
        String CREATE_REGISTER_TABLE = "CREATE TABLE " + TABLE_REGISTER + "("
                + KEY_ID + " INTEGER PRIMARY KEY," + KEY_FIRST_NAME + " TEXT,"
                + KEY_MIDLE_NAME + " TEXT" + KEY_LAST_NAME + " TEXT," + KEY_DOB
                + " TEXT" + KEY_GENDER + " TEXT," + KEY_MARITAL_STAT + " TEXT"
                + KEY_EMAIL + " TEXT," + KEY_PASSWORD + " TEXT" + ")";
        Log.i("CREATE_REGISTER_TABLE", CREATE_REGISTER_TABLE);
        db.execSQL(CREATE_REGISTER_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_REGISTER);

        // Create tables again
        onCreate(db);
    }

    /**
     * All CRUD(Create, Read, Update, Delete) Operations
     */

    // Adding new register
    void addRegister(Register_values registerdata) {
        SQLiteDatabase db = this.getWritableDatabase();

        Log.i(KEY_FIRST_NAME, registerdata.getFirst_name());
        Log.i(KEY_MIDLE_NAME, registerdata.getMidle_name());
        Log.i(KEY_LAST_NAME, registerdata.getLast_name());
        Log.i(KEY_DOB, registerdata.getDate_of_birth());
        Log.i(KEY_GENDER, registerdata.getGender());
        Log.i(KEY_MARITAL_STAT, registerdata.getMarital_stat());
//      Log.i(KEY_EMAIL, registerdata.getEmail());
        Log.i(KEY_PASSWORD, registerdata.getPassword());


        ContentValues values = new ContentValues();
        values.put(KEY_FIRST_NAME, registerdata.getFirst_name());
        values.put(KEY_MIDLE_NAME, registerdata.getMidle_name());
        values.put(KEY_LAST_NAME, registerdata.getLast_name());
        values.put(KEY_DOB, registerdata.getDate_of_birth());
        values.put(KEY_GENDER, registerdata.getGender());
        values.put(KEY_MARITAL_STAT, registerdata.getMarital_stat());
//      values.put(KEY_EMAIL, registerdata.getEmail());
        values.put(KEY_PASSWORD, registerdata.getPassword());

        // Inserting Row
        db.insert(TABLE_REGISTER, null, values);
        db.close(); // Closing database connection
    }

}

这是Register_values类

public class Register_values {

    // private variables
    int ID;
    String First_name;
    String Midle_name;
    String Last_name;
    String Date_of_birth;
    String Gender;
    String Marital_stat;
    String Email;
    String Password;

    public Register_values() {

    }

    public Register_values(int _id, String _first_name, String _midle_name,
            String _last_name, String _date_of_birth, String _gender,
            String _marital_stat, String _email, String _password) {
        this.ID = _id;
        this.First_name = _first_name;
        this.Midle_name = _midle_name;
        this.Last_name = _last_name;
        this.Date_of_birth = _date_of_birth;
        this.Gender = _gender;
        this.Marital_stat = _marital_stat;
        this.Email = _email;
        this.Password = _password;
    }

    public Register_values(String _first_name, String _midle_name,
            String _last_name, String _date_of_birth, String _gender,
            String _marital_stat, String _email, String _password) {
        this.First_name = _first_name;
        this.Midle_name = _midle_name;
        this.Last_name = _last_name;
        this.Date_of_birth = _date_of_birth;
        this.Gender = _gender;
        this.Marital_stat = _marital_stat;
        this.Email = _email;
        this.Password = _password;
    }

    public int getID() {
        return this.ID;
    }

    public void setID(int id) {
        this.ID = id;
    }

    public String getFirst_name() {
        return First_name;
    }

    public void setFirst_name(String first_name) {
        this.First_name = first_name;
    }

    public String getMidle_name() {
        return this.Midle_name;
    }

    public void setMidle_name(String midle_name) {
        this.Midle_name = midle_name;
    }

    public String getLast_name() {
        return this.Last_name;
    }

    public void setLast_name(String last_name) {
        this.Last_name = last_name;
    }

    public String getDate_of_birth() {
        return this.Date_of_birth;
    }

    public void setDate_of_birth(String date_of_birth) {
        this.Date_of_birth = date_of_birth;
    }

    public String getGender() {
        return this.Gender;
    }

    public void setGender(String gender) {
        this.Gender = gender;
    }

    public String getMarital_stat() {
        return this.Marital_stat;
    }

    public void setMarital_stat(String marital_stat) {
        this.Marital_stat = marital_stat;
    }

    public String getEmail() {
        return this.Email;
    }

    public void setEmail(String email) {
        this.Email = email;
    }

    public String getPassword() {
        return this.Password;
    }

    public void setPassword(String password) {
        this.Password = password;
    }



}

SQL创建查询中有错误,缺少许多逗号。

String CREATE_REGISTER_TABLE = "CREATE TABLE " + TABLE_REGISTER + "("
    + KEY_ID + " INTEGER PRIMARY KEY," + KEY_FIRST_NAME + " TEXT,"
    + KEY_MIDLE_NAME + " TEXT, " + KEY_LAST_NAME + " TEXT," + KEY_DOB
    + " TEXT, " + KEY_GENDER + " TEXT," + KEY_MARITAL_STAT + " TEXT, "
    + KEY_EMAIL + " TEXT," + KEY_PASSWORD + " TEXT" + ")";

您在创建查询中缺少一些逗号(,)分隔符

 // Creating Tables
    @Override
    public void onCreate(SQLiteDatabase db) {
        String CREATE_REGISTER_TABLE = "CREATE TABLE " + TABLE_REGISTER + "("
                + KEY_ID + " INTEGER PRIMARY KEY," + KEY_FIRST_NAME + " TEXT,"
                + KEY_MIDLE_NAME + " TEXT," + KEY_LAST_NAME + " TEXT," + KEY_DOB
                + " TEXT," + KEY_GENDER + " TEXT," + KEY_MARITAL_STAT + " TEXT,"
                + KEY_EMAIL + " TEXT," + KEY_PASSWORD + " TEXT" + ")";
        Log.i("CREATE_REGISTER_TABLE", CREATE_REGISTER_TABLE);
        db.execSQL(CREATE_REGISTER_TABLE);
    }

即KEY_MIDLE_NAME,KEY_DOB,KEY_MARITAL_STAT之后的逗号

您的日志猫在说: table register has no column named last_name

我认为这是由于该行:

... KEY_MIDLE_NAME + " TEXT" + KEY_LAST_NAME ....

您忘记了KEY_MIDLE_NAMEKEY_LAST_NAME列定义之间的comma

在KEY_MIDLE_NAME +“ TEXT”之后添加逗号

暂无
暂无

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

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