Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android应用程序在开始时崩溃:数据库Sqlite_Android - Fatal编程技术网

Android应用程序在开始时崩溃:数据库Sqlite

Android应用程序在开始时崩溃:数据库Sqlite,android,Android,我正在开发一个android应用程序,当我编程时,没有问题或错误,当我在设备上运行它时,logcat: 11-16 09:27:29.930 4261-4261/? I/zygote: Not late-enabling -Xcheck:jni (already on) 11-16 09:27:29.956 4261-4261/? W/zygote: Unexpected CPU variant for X86 using defaults: x86 11-16 09:27:30.188

我正在开发一个android应用程序,当我编程时,没有问题或错误,当我在设备上运行它时,logcat:

    11-16 09:27:29.930 4261-4261/? I/zygote: Not late-enabling -Xcheck:jni (already on)
11-16 09:27:29.956 4261-4261/? W/zygote: Unexpected CPU variant for X86 using defaults: x86
11-16 09:27:30.188 4261-4261/com.example.root.myapplication I/InstantRun: starting instant run server: is main process
11-16 09:27:30.616 4261-4261/com.example.root.myapplication E/SQLiteLog: (1) near "KEYMatriculeINTEGER": syntax error
11-16 09:27:30.617 4261-4261/com.example.root.myapplication D/AndroidRuntime: Shutting down VM
11-16 09:27:30.619 4261-4261/com.example.root.myapplication E/AndroidRuntime: FATAL EXCEPTION: main
                                                                              Process: com.example.root.myapplication, PID: 4261
                                                                              java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.root.myapplication/com.example.root.myapplication.MainActivity}: android.database.sqlite.SQLiteException: near "KEYMatriculeINTEGER": syntax error (code 1): , while compiling: CREATE TABLE User(id INTEGER PRIMARY KEYMatriculeINTEGER PRIMARY KEYNomTEXTPrenomTEXTTypeTEXT)
                                                                                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2778)
                                                                                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
                                                                                  at android.app.ActivityThread.-wrap11(Unknown Source:0)
                                                                                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)
                                                                                  at android.os.Handler.dispatchMessage(Handler.java:106)
                                                                                  at android.os.Looper.loop(Looper.java:164)
                                                                                  at android.app.ActivityThread.main(ActivityThread.java:6494)
                                                                                  at java.lang.reflect.Method.invoke(Native Method)
                                                                                  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
                                                                                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
                                                                               Caused by: android.database.sqlite.SQLiteException: near "KEYMatriculeINTEGER": syntax error (code 1): , while compiling: CREATE TABLE User(id INTEGER PRIMARY KEYMatriculeINTEGER PRIMARY KEYNomTEXTPrenomTEXTTypeTEXT)
                                                                                  at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
                                                                                  at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:890)
                                                                                  at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:501)
                                                                                  at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
                                                                                  at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
                                                                                  at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
                                                                                  at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1752)
                                                                                  at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1682)
                                                                                  at model.sqlite.data.ModelHelper.onCreate(ModelHelper.java:101)
                                                                                  at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:333)
                                                                                  at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:262)
                                                                                  at com.example.root.myapplication.MainActivity.onCreate(MainActivity.java:38)
                                                                                  at android.app.Activity.performCreate(Activity.java:7000)
                                                                                  at android.app.Activity.performCreate(Activity.java:6991)
                                                                                  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214)
                                                                                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2731)
                                                                                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856) 
                                                                                  at android.app.ActivityThread.-wrap11(Unknown Source:0) 
                                                                                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589) 
                                                                                  at android.os.Handler.dispatchMessage(Handler.java:106) 
                                                                                  at android.os.Looper.loop(Looper.java:164) 
                                                                                  at android.app.ActivityThread.main(ActivityThread.java:6494) 
                                                                                  at java.lang.reflect.Method.invoke(Native Method) 
                                                                                  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) 
                                                                                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) 
}

然后是Modelhelper:

    package model.sqlite.data;

import android.util.Log;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

import java.util.ArrayList;
import java.util.List;

import model.sqlite.data.user;
import model.sqlite.data.question;
import model.sqlite.data.theme;
import model.sqlite.data.answer;

public class ModelHelper extends SQLiteOpenHelper {
    private static final String LOG = "ModelHelper";

    private static final int DATABASE_VERSION = 1;

    private static final String DATABASE_NAME = "model";

    // Table names
    public static final String TABLE_USER = "User";
    private static final String TABLE_QUESTION = "Question";
    private static final String TABLE_THEME = "Theme";
    private static final String TABLE_ANSWER = "Answer";

    // Common column names
    private static final String KEY_ID = "id";
    private static final String KEY_ID_QUESTION = "ID_question";
    public static final String KEY_MATRICULE = "Matricule";
    private static final String KEY_ID_THEME = "ID_Theme";

    // Table User columns
    public static final String KEY_NOM = "Nom";
    public static final String KEY_PRENOM = "Prenom";
    public static final String KEY_TYPE = "Type";
    // Table Question columns
    private static final String KEY_QUESTION = "Question";
    private static final String KEY_PROFIL_CIBLE = "Profil cible";
    private static final String KEY_REGLE = "Regle";
    private static final String KEY_PLANACT = "PlanAct";
    // Table Theme columns
    private static final String KEY_THEME = "Theme";
    // Table Answer columns
    private static final String KEY_DATE = "Date";
    private static final String KEY_REPONSE = "Reponse";
    private static final String KEY_COMMENTAIRE = "Commentaire";
    // User table create statement
    private static final String CREATE_TABLE_USER = 
        "CREATE TABLE " + TABLE_USER + "("
    +    KEY_MATRICULE + "INTEGER PRIMARY KEY"
    +    KEY_NOM + "TEXT"
    +    KEY_PRENOM + "TEXT"
    +    KEY_TYPE + "TEXT"
    +    ")";

    // Question table create statement
    private static final String CREATE_TABLE_QUESTION = 
        "CREATE TABLE " + TABLE_QUESTION + "("
    +    KEY_ID + " INTEGER PRIMARY KEY"
    +    KEY_ID_QUESTION + "INTEGER PRIMARY KEY"
    +    KEY_QUESTION + "TEXT"
    +    KEY_PROFIL_CIBLE + "TEXT"
    +    KEY_REGLE + "TEXT"
    +    KEY_PLANACT + "TEXT"
    +    KEY_ID_THEME + "INTEGER"
    +    ")";

    // Theme table create statement
    private static final String CREATE_TABLE_THEME = 
        "CREATE TABLE " + TABLE_THEME + "("
    +    KEY_ID + " INTEGER PRIMARY KEY"
    +    KEY_ID_THEME + "INTEGER PRIMARY KEY"
    +    KEY_THEME + "TEXT"
    +    ")";

    // Answer table create statement
    private static final String CREATE_TABLE_ANSWER = 
        "CREATE TABLE " + TABLE_ANSWER + "("
    +    KEY_ID + " INTEGER PRIMARY KEY"
    +    KEY_MATRICULE + "INTEGER PRIMARY KEY"
    +    KEY_ID_QUESTION + "INTEGER PRIMARY KEY"
    +    KEY_DATE + "TEXT PRIMARY KEY"
    +    KEY_REPONSE + "TEXT"
    +    KEY_COMMENTAIRE + "TEXT"
    +    ")";


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

    @Override
    public void onCreate(SQLiteDatabase db) {
        // creating required tables
        db.execSQL(CREATE_TABLE_USER);
        db.execSQL(CREATE_TABLE_QUESTION);
        db.execSQL(CREATE_TABLE_THEME);
        db.execSQL(CREATE_TABLE_ANSWER);
    }

     @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // on upgrade drop older tables
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_USER);
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_QUESTION);
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_THEME);
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_ANSWER);

        // create new tables
        onCreate(db);
    }

    // closing database
    public void closeDB() {
        SQLiteDatabase db = this.getReadableDatabase();
        if (db != null && db.isOpen())
            db.close();
    }


    // CRUD operations for User

    public long createuser(user arg) {
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();
        values.put(KEY_MATRICULE, arg.getmatricule());
        values.put(KEY_NOM, arg.getnom());
        values.put(KEY_PRENOM, arg.getprenom());
        values.put(KEY_TYPE, arg.gettype());

        return db.insert(TABLE_USER, null, values);
    }

    public user getuser(long id) {
        SQLiteDatabase db = this.getReadableDatabase();

        String selectQuery = "SELECT  * FROM " + TABLE_USER + " WHERE "
            + KEY_ID + " = " + id;

        Log.e(LOG, selectQuery);

        Cursor c = db.rawQuery(selectQuery, null);

        if (c != null) {
            c.moveToFirst();
        }

        user entry = new user();
        entry.setmatricule(c.getInt(c.getColumnIndex(KEY_MATRICULE)));
        entry.setnom(c.getString(c.getColumnIndex(KEY_NOM)));
        entry.setprenom(c.getString(c.getColumnIndex(KEY_PRENOM)));
        entry.settype(c.getString(c.getColumnIndex(KEY_TYPE)));

        return entry;
    }

    public List<user> getAlluser() {
        List<user> list = new ArrayList<user>();
        String selectQuery = "SELECT  * FROM " + TABLE_USER;

        Log.e(LOG, selectQuery);

        SQLiteDatabase db = this.getReadableDatabase();
        Cursor c = db.rawQuery(selectQuery, null);

        // looping through all rows and adding to list
        if (c.moveToFirst()) {
            do {
                user entry = new user();
                entry.setmatricule(c.getInt(c.getColumnIndex(KEY_MATRICULE)));
                entry.setnom(c.getString(c.getColumnIndex(KEY_NOM)));
                entry.setprenom(c.getString(c.getColumnIndex(KEY_PRENOM)));
                entry.settype(c.getString(c.getColumnIndex(KEY_TYPE)));

                // adding to todo list
                list.add(entry);
            } while (c.moveToNext());
        }

        return list;
    }

    public long updateuser(user arg) {
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();

        values.put(KEY_MATRICULE, arg.getmatricule());
        values.put(KEY_NOM, arg.getnom());
        values.put(KEY_PRENOM, arg.getprenom());
        values.put(KEY_TYPE, arg.gettype());

        // updating row
        return db.update(TABLE_USER, values, KEY_ID + " = ?",
                new String[] { String.valueOf(arg.getId()) });
    }

    public void deleteuser(long id) {
        SQLiteDatabase db = this.getWritableDatabase();
        db.delete(TABLE_USER, KEY_ID + " = ?",
                new String[] { String.valueOf(id) });
    }


    // CRUD operations for Question

    public long createquestion(question arg) {
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();
        values.put(KEY_ID_QUESTION, arg.getiDQuestion());
        values.put(KEY_QUESTION, arg.getquestion());
        values.put(KEY_PROFIL_CIBLE, arg.getprofilCible());
        values.put(KEY_REGLE, arg.getregle());
        values.put(KEY_PLANACT, arg.getplanAct());
        values.put(KEY_ID_THEME, arg.getiDTheme());

        return db.insert(TABLE_QUESTION, null, values);
    }

    public question getquestion(long id) {
        SQLiteDatabase db = this.getReadableDatabase();

        String selectQuery = "SELECT  * FROM " + TABLE_QUESTION + " WHERE "
            + KEY_ID + " = " + id;

        Log.e(LOG, selectQuery);

        Cursor c = db.rawQuery(selectQuery, null);

        if (c != null) {
            c.moveToFirst();
        }

        question entry = new question();
        entry.setiDQuestion(c.getInt(c.getColumnIndex(KEY_ID_QUESTION)));
        entry.setquestion(c.getString(c.getColumnIndex(KEY_QUESTION)));
        entry.setprofilCible(c.getString(c.getColumnIndex(KEY_PROFIL_CIBLE)));
        entry.setregle(c.getString(c.getColumnIndex(KEY_REGLE)));
        entry.setplanAct(c.getString(c.getColumnIndex(KEY_PLANACT)));
        entry.setiDTheme(c.getInt(c.getColumnIndex(KEY_ID_THEME)));

        return entry;
    }

    public List<question> getAllquestion() {
        List<question> list = new ArrayList<question>();
        String selectQuery = "SELECT  * FROM " + TABLE_QUESTION;

        Log.e(LOG, selectQuery);

        SQLiteDatabase db = this.getReadableDatabase();
        Cursor c = db.rawQuery(selectQuery, null);

        // looping through all rows and adding to list
        if (c.moveToFirst()) {
            do {
                question entry = new question();
                entry.setiDQuestion(c.getInt(c.getColumnIndex(KEY_ID_QUESTION)));
                entry.setquestion(c.getString(c.getColumnIndex(KEY_QUESTION)));
                entry.setprofilCible(c.getString(c.getColumnIndex(KEY_PROFIL_CIBLE)));
                entry.setregle(c.getString(c.getColumnIndex(KEY_REGLE)));
                entry.setplanAct(c.getString(c.getColumnIndex(KEY_PLANACT)));
                entry.setiDTheme(c.getInt(c.getColumnIndex(KEY_ID_THEME)));

                // adding to todo list
                list.add(entry);
            } while (c.moveToNext());
        }

        return list;
    }

    public long updatequestion(question arg) {
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();

        values.put(KEY_ID_QUESTION, arg.getiDQuestion());
        values.put(KEY_QUESTION, arg.getquestion());
        values.put(KEY_PROFIL_CIBLE, arg.getprofilCible());
        values.put(KEY_REGLE, arg.getregle());
        values.put(KEY_PLANACT, arg.getplanAct());
        values.put(KEY_ID_THEME, arg.getiDTheme());

        // updating row
        return db.update(TABLE_QUESTION, values, KEY_ID + " = ?",
                new String[] { String.valueOf(arg.getId()) });
    }

    public void deletequestion(long id) {
        SQLiteDatabase db = this.getWritableDatabase();
        db.delete(TABLE_QUESTION, KEY_ID + " = ?",
                new String[] { String.valueOf(id) });
    }


    // CRUD operations for Theme

    public long createtheme(theme arg) {
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();
        values.put(KEY_ID_THEME, arg.getiDTheme());
        values.put(KEY_THEME, arg.gettheme());

        return db.insert(TABLE_THEME, null, values);
    }

    public theme gettheme(long id) {
        SQLiteDatabase db = this.getReadableDatabase();

        String selectQuery = "SELECT  * FROM " + TABLE_THEME + " WHERE "
            + KEY_ID + " = " + id;

        Log.e(LOG, selectQuery);

        Cursor c = db.rawQuery(selectQuery, null);

        if (c != null) {
            c.moveToFirst();
        }

        theme entry = new theme();
        entry.setiDTheme(c.getInt(c.getColumnIndex(KEY_ID_THEME)));
        entry.settheme(c.getString(c.getColumnIndex(KEY_THEME)));

        return entry;
    }

    public List<theme> getAlltheme() {
        List<theme> list = new ArrayList<theme>();
        String selectQuery = "SELECT  * FROM " + TABLE_THEME;

        Log.e(LOG, selectQuery);

        SQLiteDatabase db = this.getReadableDatabase();
        Cursor c = db.rawQuery(selectQuery, null);

        // looping through all rows and adding to list
        if (c.moveToFirst()) {
            do {
                theme entry = new theme();
                entry.setiDTheme(c.getInt(c.getColumnIndex(KEY_ID_THEME)));
                entry.settheme(c.getString(c.getColumnIndex(KEY_THEME)));

                // adding to todo list
                list.add(entry);
            } while (c.moveToNext());
        }

        return list;
    }

    public long updatetheme(theme arg) {
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();

        values.put(KEY_ID_THEME, arg.getiDTheme());
        values.put(KEY_THEME, arg.gettheme());

        // updating row
        return db.update(TABLE_THEME, values, KEY_ID + " = ?",
                new String[] { String.valueOf(arg.getId()) });
    }

    public void deletetheme(long id) {
        SQLiteDatabase db = this.getWritableDatabase();
        db.delete(TABLE_THEME, KEY_ID + " = ?",
                new String[] { String.valueOf(id) });
    }


    // CRUD operations for Answer

    public long createanswer(answer arg) {
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();
        values.put(KEY_MATRICULE, arg.getmatricule());
        values.put(KEY_ID_QUESTION, arg.getiDQuestion());
        values.put(KEY_DATE, arg.getdate());
        values.put(KEY_REPONSE, arg.getreponse());
        values.put(KEY_COMMENTAIRE, arg.getcommentaire());

        return db.insert(TABLE_ANSWER, null, values);
    }

    public answer getanswer(long id) {
        SQLiteDatabase db = this.getReadableDatabase();

        String selectQuery = "SELECT  * FROM " + TABLE_ANSWER + " WHERE "
            + KEY_ID + " = " + id;

        Log.e(LOG, selectQuery);

        Cursor c = db.rawQuery(selectQuery, null);

        if (c != null) {
            c.moveToFirst();
        }

        answer entry = new answer();
        entry.setmatricule(c.getInt(c.getColumnIndex(KEY_MATRICULE)));
        entry.setiDQuestion(c.getInt(c.getColumnIndex(KEY_ID_QUESTION)));
        entry.setdate(c.getString(c.getColumnIndex(KEY_DATE)));
        entry.setreponse(c.getString(c.getColumnIndex(KEY_REPONSE)));
        entry.setcommentaire(c.getString(c.getColumnIndex(KEY_COMMENTAIRE)));

        return entry;
    }

    public List<answer> getAllanswer() {
        List<answer> list = new ArrayList<answer>();
        String selectQuery = "SELECT  * FROM " + TABLE_ANSWER;

        Log.e(LOG, selectQuery);

        SQLiteDatabase db = this.getReadableDatabase();
        Cursor c = db.rawQuery(selectQuery, null);

        // looping through all rows and adding to list
        if (c.moveToFirst()) {
            do {
                answer entry = new answer();
                entry.setmatricule(c.getInt(c.getColumnIndex(KEY_MATRICULE)));
                entry.setiDQuestion(c.getInt(c.getColumnIndex(KEY_ID_QUESTION)));
                entry.setdate(c.getString(c.getColumnIndex(KEY_DATE)));
                entry.setreponse(c.getString(c.getColumnIndex(KEY_REPONSE)));
                entry.setcommentaire(c.getString(c.getColumnIndex(KEY_COMMENTAIRE)));

                // adding to todo list
                list.add(entry);
            } while (c.moveToNext());
        }

        return list;
    }

    public long updateanswer(answer arg) {
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();

        values.put(KEY_MATRICULE, arg.getmatricule());
        values.put(KEY_ID_QUESTION, arg.getiDQuestion());
        values.put(KEY_DATE, arg.getdate().toString());
        values.put(KEY_REPONSE, arg.getreponse());
        values.put(KEY_COMMENTAIRE, arg.getcommentaire());

        // updating row
        return db.update(TABLE_ANSWER, values, KEY_ID + " = ?",
                new String[] { String.valueOf(arg.getId()) });
    }

    public void deleteanswer(long id) {
        SQLiteDatabase db = this.getWritableDatabase();
        db.delete(TABLE_ANSWER, KEY_ID + " = ?",
                new String[] { String.valueOf(id) });
    }


}
package model.sqlite.data;
导入android.util.Log;
导入android.content.ContentValues;
导入android.content.Context;
导入android.database.Cursor;
导入android.database.sqlite.SQLiteDatabase;
导入android.database.sqlite.SQLiteOpenHelper;
导入java.util.ArrayList;
导入java.util.List;
导入model.sqlite.data.user;
导入model.sqlite.data.question;
导入model.sqlite.data.theme;
导入model.sqlite.data.answer;
公共类ModelHelper扩展了SQLiteOpenHelper{
私有静态最终字符串LOG=“ModelHelper”;
私有静态最终int数据库_VERSION=1;
私有静态最终字符串数据库\u NAME=“model”;
//表名
公共静态最终字符串表\u USER=“USER”;
私有静态最终字符串表\u QUESTION=“QUESTION”;
私有静态最终字符串表\u THEME=“THEME”;
私有静态最终字符串表\u ANSWER=“ANSWER”;
//常用列名
私有静态最终字符串密钥\u ID=“ID”;
私有静态最终字符串KEY\u ID\u QUESTION=“ID\u QUESTION”;
公共静态最终字符串键\u MATRICULE=“MATRICULE”;
私有静态最终字符串KEY\u ID\u THEME=“ID\u THEME”;
//表用户列
公共静态最终字符串键\u NOM=“NOM”;
公共静态最终字符串键\u PRENOM=“PRENOM”;
公共静态最终字符串键\u TYPE=“TYPE”;
//表问题列
私有静态最终字符串密钥\u QUESTION=“QUESTION”;
私有静态最终字符串密钥\u PROFIL\u CIBLE=“PROFIL CIBLE”;
私有静态最终字符串键\u REGLE=“REGLE”;
私有静态最终字符串键\u PLANACT=“PLANACT”;
//表主题列
私有静态最终字符串键\u THEME=“THEME”;
//表3:答案列
私有静态最终字符串键\u DATE=“DATE”;
私有静态最终字符串键\u REPONSE=“REPONSE”;
私有静态最终字符串键\u COMMENTAIRE=“COMMENTAIRE”;
//用户表创建语句
私有静态最终字符串创建\u表\u用户=
“创建表格”+表格用户+”(“
+密钥矩阵+“整数主键”
+键名称+“文本”
+按键+文本
+按键类型+“文本”
+    ")";
//问题表创建语句
私有静态最终字符串创建\u表\u问题=
“创建表格”+表格问题+”(“
+密钥ID+“整数主键”
+KEY\u ID\u QUESTION+“整数主键”
+关键问题+“文本”
+按键配置文件+“文本”
+按键规则+“文本”
+键\u PLANACT+“文本”
+键\u ID\u主题+“整数”
+    ")";
//主题表创建语句
私有静态最终字符串创建\u表\u主题=
“创建表格”+表格主题+”(“
+密钥ID+“整数主键”
+键\u ID\u主题+“整数主键”
+按键主题+“文本”
+    ")";
//应答表创建语句
私有静态最终字符串创建\u表\u答案=
“创建表格”+表格回答+”(“
+密钥ID+“整数主键”
+密钥矩阵+“整数主键”
+KEY\u ID\u QUESTION+“整数主键”
+键\日期+“文本主键”
+按键响应+“文本”
+关键字注释+“文本”
+    ")";
公共ModelHelper(上下文){
super(上下文、数据库名称、null、数据库版本);
}
@凌驾
public void onCreate(SQLiteDatabase db){
//创建所需的表
execSQL(创建表用户);
execSQL(创建表);
execSQL(创建表主题);
execSQL(创建表和答案);
}
@凌驾
public void onUpgrade(SQLiteDatabase db,int-oldVersion,int-newVersion){
//升级时删除旧表
db.execSQL(“如果存在删除表”+表用户);
db.execSQL(“如果存在删除表”+表_问题);
db.execSQL(“如果存在删除表”+表主题);
db.execSQL(“如果存在,则删除表”+表_-ANSWER);
//创建新表
onCreate(db);
}
//关闭数据库
公共数据库(){
SQLiteDatabase db=this.getReadableDatabase();
如果(db!=null&&db.isOpen())
db.close();
}
//用户的CRUD操作
公共长createuser(用户参数){
SQLiteDatabase db=this.getWritableDatabase();
ContentValues=新的ContentValues();
value.put(KEY_MATRICULE,arg.getmatricule());
value.put(KEY_NOM,arg.getnom());
value.put(KEY_PRENOM,arg.getprenom());
value.put(键类型,arg.gettype());
返回db.insert(TABLE_USER,null,value);
}
公共用户getuser(长id){
SQLiteDatabase db=this.getReadableDatabase();
String selectQuery=“SELECT*FROM”+表\用户+“WHERE”
+按键ID+“=”+ID;
Log.e(Log,selectQuery);
游标c=db.rawQuery(selectQuery,null);
如果(c!=null){
c、 moveToFirst();
}
用户条目=新用户();
entry.setmatricule(c.getInt(c.getColumnIndex(KEY_MATRICULE));
entry.setnom(c.getString(c.getColumnIndex(KEY_NOM));
entry.setprenom(c.getString(c.getColumnIndex(KEY_PRENOM));
settype(c.getString(c.getColumnIndex(KEY_TYPE));
返回条目;
}
公共列表getAlluser(){
列表=新的ArrayList();
String selectQuery=“SELECT*FROM”+表格\用户;
Log.e(Log,selectQuery);
SQLiteDatabase db=this.getReadableDatabase();
游标c=db.rawQuery(selectQuery,null);
//循环遍历所有行并添加到列表
if(c.moveToFirst()){
做{
用户条目=新用户();
条目设置矩阵(c.get
    package model.sqlite.data;

import android.util.Log;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

import java.util.ArrayList;
import java.util.List;

import model.sqlite.data.user;
import model.sqlite.data.question;
import model.sqlite.data.theme;
import model.sqlite.data.answer;

public class ModelHelper extends SQLiteOpenHelper {
    private static final String LOG = "ModelHelper";

    private static final int DATABASE_VERSION = 1;

    private static final String DATABASE_NAME = "model";

    // Table names
    public static final String TABLE_USER = "User";
    private static final String TABLE_QUESTION = "Question";
    private static final String TABLE_THEME = "Theme";
    private static final String TABLE_ANSWER = "Answer";

    // Common column names
    private static final String KEY_ID = "id";
    private static final String KEY_ID_QUESTION = "ID_question";
    public static final String KEY_MATRICULE = "Matricule";
    private static final String KEY_ID_THEME = "ID_Theme";

    // Table User columns
    public static final String KEY_NOM = "Nom";
    public static final String KEY_PRENOM = "Prenom";
    public static final String KEY_TYPE = "Type";
    // Table Question columns
    private static final String KEY_QUESTION = "Question";
    private static final String KEY_PROFIL_CIBLE = "Profil cible";
    private static final String KEY_REGLE = "Regle";
    private static final String KEY_PLANACT = "PlanAct";
    // Table Theme columns
    private static final String KEY_THEME = "Theme";
    // Table Answer columns
    private static final String KEY_DATE = "Date";
    private static final String KEY_REPONSE = "Reponse";
    private static final String KEY_COMMENTAIRE = "Commentaire";
    // User table create statement
    private static final String CREATE_TABLE_USER = 
        "CREATE TABLE " + TABLE_USER + "("
    +    KEY_MATRICULE + "INTEGER PRIMARY KEY"
    +    KEY_NOM + "TEXT"
    +    KEY_PRENOM + "TEXT"
    +    KEY_TYPE + "TEXT"
    +    ")";

    // Question table create statement
    private static final String CREATE_TABLE_QUESTION = 
        "CREATE TABLE " + TABLE_QUESTION + "("
    +    KEY_ID + " INTEGER PRIMARY KEY"
    +    KEY_ID_QUESTION + "INTEGER PRIMARY KEY"
    +    KEY_QUESTION + "TEXT"
    +    KEY_PROFIL_CIBLE + "TEXT"
    +    KEY_REGLE + "TEXT"
    +    KEY_PLANACT + "TEXT"
    +    KEY_ID_THEME + "INTEGER"
    +    ")";

    // Theme table create statement
    private static final String CREATE_TABLE_THEME = 
        "CREATE TABLE " + TABLE_THEME + "("
    +    KEY_ID + " INTEGER PRIMARY KEY"
    +    KEY_ID_THEME + "INTEGER PRIMARY KEY"
    +    KEY_THEME + "TEXT"
    +    ")";

    // Answer table create statement
    private static final String CREATE_TABLE_ANSWER = 
        "CREATE TABLE " + TABLE_ANSWER + "("
    +    KEY_ID + " INTEGER PRIMARY KEY"
    +    KEY_MATRICULE + "INTEGER PRIMARY KEY"
    +    KEY_ID_QUESTION + "INTEGER PRIMARY KEY"
    +    KEY_DATE + "TEXT PRIMARY KEY"
    +    KEY_REPONSE + "TEXT"
    +    KEY_COMMENTAIRE + "TEXT"
    +    ")";


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

    @Override
    public void onCreate(SQLiteDatabase db) {
        // creating required tables
        db.execSQL(CREATE_TABLE_USER);
        db.execSQL(CREATE_TABLE_QUESTION);
        db.execSQL(CREATE_TABLE_THEME);
        db.execSQL(CREATE_TABLE_ANSWER);
    }

     @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // on upgrade drop older tables
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_USER);
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_QUESTION);
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_THEME);
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_ANSWER);

        // create new tables
        onCreate(db);
    }

    // closing database
    public void closeDB() {
        SQLiteDatabase db = this.getReadableDatabase();
        if (db != null && db.isOpen())
            db.close();
    }


    // CRUD operations for User

    public long createuser(user arg) {
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();
        values.put(KEY_MATRICULE, arg.getmatricule());
        values.put(KEY_NOM, arg.getnom());
        values.put(KEY_PRENOM, arg.getprenom());
        values.put(KEY_TYPE, arg.gettype());

        return db.insert(TABLE_USER, null, values);
    }

    public user getuser(long id) {
        SQLiteDatabase db = this.getReadableDatabase();

        String selectQuery = "SELECT  * FROM " + TABLE_USER + " WHERE "
            + KEY_ID + " = " + id;

        Log.e(LOG, selectQuery);

        Cursor c = db.rawQuery(selectQuery, null);

        if (c != null) {
            c.moveToFirst();
        }

        user entry = new user();
        entry.setmatricule(c.getInt(c.getColumnIndex(KEY_MATRICULE)));
        entry.setnom(c.getString(c.getColumnIndex(KEY_NOM)));
        entry.setprenom(c.getString(c.getColumnIndex(KEY_PRENOM)));
        entry.settype(c.getString(c.getColumnIndex(KEY_TYPE)));

        return entry;
    }

    public List<user> getAlluser() {
        List<user> list = new ArrayList<user>();
        String selectQuery = "SELECT  * FROM " + TABLE_USER;

        Log.e(LOG, selectQuery);

        SQLiteDatabase db = this.getReadableDatabase();
        Cursor c = db.rawQuery(selectQuery, null);

        // looping through all rows and adding to list
        if (c.moveToFirst()) {
            do {
                user entry = new user();
                entry.setmatricule(c.getInt(c.getColumnIndex(KEY_MATRICULE)));
                entry.setnom(c.getString(c.getColumnIndex(KEY_NOM)));
                entry.setprenom(c.getString(c.getColumnIndex(KEY_PRENOM)));
                entry.settype(c.getString(c.getColumnIndex(KEY_TYPE)));

                // adding to todo list
                list.add(entry);
            } while (c.moveToNext());
        }

        return list;
    }

    public long updateuser(user arg) {
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();

        values.put(KEY_MATRICULE, arg.getmatricule());
        values.put(KEY_NOM, arg.getnom());
        values.put(KEY_PRENOM, arg.getprenom());
        values.put(KEY_TYPE, arg.gettype());

        // updating row
        return db.update(TABLE_USER, values, KEY_ID + " = ?",
                new String[] { String.valueOf(arg.getId()) });
    }

    public void deleteuser(long id) {
        SQLiteDatabase db = this.getWritableDatabase();
        db.delete(TABLE_USER, KEY_ID + " = ?",
                new String[] { String.valueOf(id) });
    }


    // CRUD operations for Question

    public long createquestion(question arg) {
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();
        values.put(KEY_ID_QUESTION, arg.getiDQuestion());
        values.put(KEY_QUESTION, arg.getquestion());
        values.put(KEY_PROFIL_CIBLE, arg.getprofilCible());
        values.put(KEY_REGLE, arg.getregle());
        values.put(KEY_PLANACT, arg.getplanAct());
        values.put(KEY_ID_THEME, arg.getiDTheme());

        return db.insert(TABLE_QUESTION, null, values);
    }

    public question getquestion(long id) {
        SQLiteDatabase db = this.getReadableDatabase();

        String selectQuery = "SELECT  * FROM " + TABLE_QUESTION + " WHERE "
            + KEY_ID + " = " + id;

        Log.e(LOG, selectQuery);

        Cursor c = db.rawQuery(selectQuery, null);

        if (c != null) {
            c.moveToFirst();
        }

        question entry = new question();
        entry.setiDQuestion(c.getInt(c.getColumnIndex(KEY_ID_QUESTION)));
        entry.setquestion(c.getString(c.getColumnIndex(KEY_QUESTION)));
        entry.setprofilCible(c.getString(c.getColumnIndex(KEY_PROFIL_CIBLE)));
        entry.setregle(c.getString(c.getColumnIndex(KEY_REGLE)));
        entry.setplanAct(c.getString(c.getColumnIndex(KEY_PLANACT)));
        entry.setiDTheme(c.getInt(c.getColumnIndex(KEY_ID_THEME)));

        return entry;
    }

    public List<question> getAllquestion() {
        List<question> list = new ArrayList<question>();
        String selectQuery = "SELECT  * FROM " + TABLE_QUESTION;

        Log.e(LOG, selectQuery);

        SQLiteDatabase db = this.getReadableDatabase();
        Cursor c = db.rawQuery(selectQuery, null);

        // looping through all rows and adding to list
        if (c.moveToFirst()) {
            do {
                question entry = new question();
                entry.setiDQuestion(c.getInt(c.getColumnIndex(KEY_ID_QUESTION)));
                entry.setquestion(c.getString(c.getColumnIndex(KEY_QUESTION)));
                entry.setprofilCible(c.getString(c.getColumnIndex(KEY_PROFIL_CIBLE)));
                entry.setregle(c.getString(c.getColumnIndex(KEY_REGLE)));
                entry.setplanAct(c.getString(c.getColumnIndex(KEY_PLANACT)));
                entry.setiDTheme(c.getInt(c.getColumnIndex(KEY_ID_THEME)));

                // adding to todo list
                list.add(entry);
            } while (c.moveToNext());
        }

        return list;
    }

    public long updatequestion(question arg) {
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();

        values.put(KEY_ID_QUESTION, arg.getiDQuestion());
        values.put(KEY_QUESTION, arg.getquestion());
        values.put(KEY_PROFIL_CIBLE, arg.getprofilCible());
        values.put(KEY_REGLE, arg.getregle());
        values.put(KEY_PLANACT, arg.getplanAct());
        values.put(KEY_ID_THEME, arg.getiDTheme());

        // updating row
        return db.update(TABLE_QUESTION, values, KEY_ID + " = ?",
                new String[] { String.valueOf(arg.getId()) });
    }

    public void deletequestion(long id) {
        SQLiteDatabase db = this.getWritableDatabase();
        db.delete(TABLE_QUESTION, KEY_ID + " = ?",
                new String[] { String.valueOf(id) });
    }


    // CRUD operations for Theme

    public long createtheme(theme arg) {
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();
        values.put(KEY_ID_THEME, arg.getiDTheme());
        values.put(KEY_THEME, arg.gettheme());

        return db.insert(TABLE_THEME, null, values);
    }

    public theme gettheme(long id) {
        SQLiteDatabase db = this.getReadableDatabase();

        String selectQuery = "SELECT  * FROM " + TABLE_THEME + " WHERE "
            + KEY_ID + " = " + id;

        Log.e(LOG, selectQuery);

        Cursor c = db.rawQuery(selectQuery, null);

        if (c != null) {
            c.moveToFirst();
        }

        theme entry = new theme();
        entry.setiDTheme(c.getInt(c.getColumnIndex(KEY_ID_THEME)));
        entry.settheme(c.getString(c.getColumnIndex(KEY_THEME)));

        return entry;
    }

    public List<theme> getAlltheme() {
        List<theme> list = new ArrayList<theme>();
        String selectQuery = "SELECT  * FROM " + TABLE_THEME;

        Log.e(LOG, selectQuery);

        SQLiteDatabase db = this.getReadableDatabase();
        Cursor c = db.rawQuery(selectQuery, null);

        // looping through all rows and adding to list
        if (c.moveToFirst()) {
            do {
                theme entry = new theme();
                entry.setiDTheme(c.getInt(c.getColumnIndex(KEY_ID_THEME)));
                entry.settheme(c.getString(c.getColumnIndex(KEY_THEME)));

                // adding to todo list
                list.add(entry);
            } while (c.moveToNext());
        }

        return list;
    }

    public long updatetheme(theme arg) {
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();

        values.put(KEY_ID_THEME, arg.getiDTheme());
        values.put(KEY_THEME, arg.gettheme());

        // updating row
        return db.update(TABLE_THEME, values, KEY_ID + " = ?",
                new String[] { String.valueOf(arg.getId()) });
    }

    public void deletetheme(long id) {
        SQLiteDatabase db = this.getWritableDatabase();
        db.delete(TABLE_THEME, KEY_ID + " = ?",
                new String[] { String.valueOf(id) });
    }


    // CRUD operations for Answer

    public long createanswer(answer arg) {
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();
        values.put(KEY_MATRICULE, arg.getmatricule());
        values.put(KEY_ID_QUESTION, arg.getiDQuestion());
        values.put(KEY_DATE, arg.getdate());
        values.put(KEY_REPONSE, arg.getreponse());
        values.put(KEY_COMMENTAIRE, arg.getcommentaire());

        return db.insert(TABLE_ANSWER, null, values);
    }

    public answer getanswer(long id) {
        SQLiteDatabase db = this.getReadableDatabase();

        String selectQuery = "SELECT  * FROM " + TABLE_ANSWER + " WHERE "
            + KEY_ID + " = " + id;

        Log.e(LOG, selectQuery);

        Cursor c = db.rawQuery(selectQuery, null);

        if (c != null) {
            c.moveToFirst();
        }

        answer entry = new answer();
        entry.setmatricule(c.getInt(c.getColumnIndex(KEY_MATRICULE)));
        entry.setiDQuestion(c.getInt(c.getColumnIndex(KEY_ID_QUESTION)));
        entry.setdate(c.getString(c.getColumnIndex(KEY_DATE)));
        entry.setreponse(c.getString(c.getColumnIndex(KEY_REPONSE)));
        entry.setcommentaire(c.getString(c.getColumnIndex(KEY_COMMENTAIRE)));

        return entry;
    }

    public List<answer> getAllanswer() {
        List<answer> list = new ArrayList<answer>();
        String selectQuery = "SELECT  * FROM " + TABLE_ANSWER;

        Log.e(LOG, selectQuery);

        SQLiteDatabase db = this.getReadableDatabase();
        Cursor c = db.rawQuery(selectQuery, null);

        // looping through all rows and adding to list
        if (c.moveToFirst()) {
            do {
                answer entry = new answer();
                entry.setmatricule(c.getInt(c.getColumnIndex(KEY_MATRICULE)));
                entry.setiDQuestion(c.getInt(c.getColumnIndex(KEY_ID_QUESTION)));
                entry.setdate(c.getString(c.getColumnIndex(KEY_DATE)));
                entry.setreponse(c.getString(c.getColumnIndex(KEY_REPONSE)));
                entry.setcommentaire(c.getString(c.getColumnIndex(KEY_COMMENTAIRE)));

                // adding to todo list
                list.add(entry);
            } while (c.moveToNext());
        }

        return list;
    }

    public long updateanswer(answer arg) {
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();

        values.put(KEY_MATRICULE, arg.getmatricule());
        values.put(KEY_ID_QUESTION, arg.getiDQuestion());
        values.put(KEY_DATE, arg.getdate().toString());
        values.put(KEY_REPONSE, arg.getreponse());
        values.put(KEY_COMMENTAIRE, arg.getcommentaire());

        // updating row
        return db.update(TABLE_ANSWER, values, KEY_ID + " = ?",
                new String[] { String.valueOf(arg.getId()) });
    }

    public void deleteanswer(long id) {
        SQLiteDatabase db = this.getWritableDatabase();
        db.delete(TABLE_ANSWER, KEY_ID + " = ?",
                new String[] { String.valueOf(id) });
    }


}
private static final String CREATE_TABLE_USER = 
    "CREATE TABLE " + TABLE_USER + "("
+    KEY_MATRICULE + " INTEGER PRIMARY KEY, "
+    KEY_NOM + " TEXT, "
+    KEY_PRENOM + " TEXT, "
+    KEY_TYPE + " TEXT"
+    ")";