2014-01-24 2 views
0

Привет, я создаю регистрационную форму, в которой мне нужно хранить все данные в sqlite. Я использовал this в качестве ссылки. Когда я вставить данные в SQLite Я получаю эту ошибку в LogCatОшибка при вводе данных в sqlite на android

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; 
    } 



} 

ответ

3

У вас возникла ошибка в запросе SQL create, вам не хватает числа запятых.

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" + ")"; 
+0

благодаря человеку она работает – Jagan

+0

после того, как я очистить проект и очистил погоню памяти он работал – Jagan

2

Вы отсутствуете некоторые запятая (,) Сепараторы в вашем создании запроса

// 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

+0

спасибо, что он работает после того, как я очистил проект и очистил память преследования, в которой он работал – Jagan

0

Вашего LogCat говорят: table register has no column named last_name

I думаю, что это связано с этой линией:

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

Вы забыли comma betwen KEY_MIDLE_NAME и KEY_LAST_NAME определения столбца

0

Добавить запятую после KEY_MIDLE_NAME + «TEXT»

Смежные вопросы