无法将数据插入到我的第二个表中,sqlite android

用户名

``我的sqLite数据库中有两个表,第一个表工作正常,但是我无法将数据插入第二个表中。我只有一个dbadapter类,并且在我的onCreate()方法中使用contentValues在两个表中插入数据。

我几乎尝试了所有方法使其正常工作,但一切似乎都没用,这是我的dbadapter代码。

 public class MainData {
    private static final String DATABASE_NAME = "Homeomedicaldb";
private static final int DATABASE_VERSION = 3;

private static final String DATABASE_TABLE1 = "basic_table";
private static final String KEY_ID = "sym_id";
private static final String KEY_NAME = "sym_detail_name";

private static final String DATABASE_TABLE2 = "detail_table";
private static final String KEY_SYM_ID = "sym_previous_id";
private static final String KEY_DET_ID = "sym_detail_id";
private static final String KEY_SYMP_DETAIL = "sym_details";
private static final String KEY_MEDICINE = "medicine_name";

private static final String CREATE_DATABASE_TABLE1 = "CREATE TABLE IF NOT EXISTS " + DATABASE_TABLE1 + " (" + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_NAME + " TEXT NOT NULL);";
private static final String CREATE_DATABASE_TABLE2 = "CREATE TABLE IF NOT EXISTS " + DATABASE_TABLE2 + " (" + KEY_DET_ID + " INTEGER PRIMARY KEY, " + KEY_SYMP_DETAIL + " text not null, " + KEY_MEDICINE + " text not null, " + KEY_SYM_ID + " integer, "+ " FOREIGN KEY ("+KEY_SYM_ID+") REFERENCES "+DATABASE_TABLE1+" ("+KEY_ID+"));" ;


private DbHelper ourHelper;
private final Context ourContext;
private static SQLiteDatabase ourDatabase;


private static class DbHelper extends SQLiteOpenHelper {

    public DbHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
            db.execSQL(CREATE_DATABASE_TABLE1);
            db.execSQL(CREATE_DATABASE_TABLE2); 
            db.execSQL("PRAGMA foreign_keys = ON;");


            ContentValues values = new ContentValues();
            values.put(KEY_ID, "1");
            values.put(KEY_NAME, "headache");
            db.insert(DATABASE_TABLE1, null, values);

            values.put(KEY_ID, "2");
            values.put(KEY_NAME, "abdominal pain");
            db.insert(DATABASE_TABLE1, null, values);

            values.put(KEY_ID, "3");
            values.put(KEY_NAME, "eye infection");
            db.insert(DATABASE_TABLE1, null, values);

            values.put(KEY_ID, "4");
            values.put(KEY_NAME, "skin pimples");
            db.insert(DATABASE_TABLE1, null, values);

            values.put(KEY_ID, "5");
            values.put(KEY_NAME, "infection");
            db.insert(DATABASE_TABLE1, null, values);
 ContentValues new_values = new ContentValues();    

new_values.put(KEY_DET_ID, "1.1");
            new_values.put(KEY_SYMP_DETAIL, "eye;inflammation;with headache");
            new_values.put(KEY_MEDICINE, "lycopodium");
            new_values.put(KEY_SYM_ID, "1");
            return ourDatabase.insert(DATABASE_TABLE2, null, new_values);   
      new_values.put(KEY_DET_ID, "1.2");
            new_values.put(KEY_SYMP_DETAIL, "nose;pain;with headache");
            new_values.put(KEY_MEDICINE, "lycopodium");
            new_values.put(KEY_SYM_ID, "1");
            db.insert(DATABASE_TABLE2, null, new_values);

            new_values.put(KEY_DET_ID, "1.3");
            new_values.put(KEY_SYMP_DETAIL, "perspiration;cold;with headache");
            new_values.put(KEY_MEDICINE, "lycopodium");
            new_values.put(KEY_SYM_ID, "1");
            db.insert(DATABASE_TABLE2, null, new_values);

            new_values.put(KEY_DET_ID, "1.4");
            new_values.put(KEY_SYMP_DETAIL, "face;heat;with headache");
            new_values.put(KEY_MEDICINE, "lycopodium");
            new_values.put(KEY_SYM_ID, "1");
            db.insert(DATABASE_TABLE2, null, new_values);

            new_values.put(KEY_DET_ID, "1.5");
            new_values.put(KEY_SYMP_DETAIL, "perspiration;with headache");
            new_values.put(KEY_MEDICINE, "lycopodium");
            new_values.put(KEY_SYM_ID, "1");
            db.insert(DATABASE_TABLE2, null, new_values); 


    }

这是即时通讯用来显示第二张表格结果的方法

    public String getDetail() {
    // TODO Auto-generated method stub
    String[] columns2 = new String[]{ KEY_DET_ID, KEY_SYMP_DETAIL, KEY_MEDICINE, KEY_SYM_ID };
    Cursor v = ourDatabase.query(DATABASE_TABLE2, columns2, null, null, null, null, null);
    String result_new= "";

    int iSym= v.getColumnIndex(KEY_SYM_ID);
    int iName = v.getColumnIndex(KEY_DET_ID);
    int iDetail = v.getColumnIndex(KEY_SYMP_DETAIL);
    int iMedicine = v.getColumnIndex(KEY_MEDICINE);
    for(v.moveToFirst(); !v.isAfterLast(); v.moveToNext()) {
        result_new= result_new+ v.getString(iSym)+ " " + v.getString(iName)+ " " + v.getString(iDetail)+ " " + v.getString(iMedicine) + "\n" ;
    }
    return result_new;
}

这是logcat

    07-31 06:52:38.731: W/IInputConnectionWrapper(1263): showStatusIcon on inactive InputConnection
07-31 06:52:44.221: I/Choreographer(1263): Skipped 90 frames!  The application may be doing too much work on its main thread.
07-31 06:55:18.651: D/gralloc_goldfish(1319): Emulator without GPU emulation detected.
07-31 06:55:19.481: I/Choreographer(1319): Skipped 86 frames!  The application may be doing too much work on its main thread.
07-31 06:55:22.271: I/Choreographer(1319): Skipped 44 frames!  The application may be doing too much work on its main thread.
07-31 06:55:39.381: I/Choreographer(1319): Skipped 65 frames!  The application may be doing too much work on its main thread.
07-31 06:56:22.861: I/Choreographer(1319): Skipped 32 frames!  The application may be doing too much work on its main thread.
07-31 06:56:32.331: I/Choreographer(1319): Skipped 39 frames!  The application may be doing too much work on its main thread.
07-31 08:00:56.271: I/Choreographer(1319): Skipped 98 frames!  The application may be doing too much work on its main thread.
07-31 08:01:00.841: I/Choreographer(1319): Skipped 72 frames!  The application may be doing too much work on its main thread.
07-31 08:01:28.291: I/Choreographer(1319): Skipped 75 frames!  The application may be doing too much work on its main thread.
07-31 08:01:45.241: I/Choreographer(1319): Skipped 96 frames!  The application may be doing too much work on its main thread.
07-31 08:20:01.821: I/Choreographer(1319): Skipped 31 frames!  The application may be doing too much work on its main thread.
用户名

解决方案:

我得到了这个问题的解决方案,将其发布可能对其他人有所帮助,我只是更改了数据库的名称,并且代码工作正常。这是因为SQLiteOpenHelper在注册要更改的数据库时似乎有些麻烦。它会找到一个具有相同名称和版本号的数据库,并显示“ meh”,并且根本不会查看结构是否有所不同。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法在 Android 中创建第二个 SQLite 表

如何将第二个活动的值保存到我的第一个活动 android studio

将第二个屏幕添加到我的Android应用程序时,它不会打开

无法在Android上更改第二个活动的TextView中的文本

我可以在android studio中同时打开第二个模拟器吗

在我的 Android 项目 (OpenCV) 中包含第二个 JNI 库后出错

在 Android Studio 中将项目添加到第二个表 SQLite 什么都不做

无法在SQLite中创建第二个表

Sqlite 没有在第二个表中插入数据

Android无法在第二个选项卡上获取ListView

无法在Android中使用“自定义意图操作”打开第二个应用

Android Studio第二个活动上的“我的按钮”不起作用

Android我想用“和”替换倒数第二个逗号?

在Android上停止我的第二个文本字段的键盘提示

按名称分组时将sqlite数据合并到第二个表中

Android Java - 使用意图将值传递给第二个活动

将第二个IP添加到接口-Linux(Android)

Android Studio:创建第二个Windows窗口

Android finishAndRemoveTask 不启动第二个活动

如何在 Android Studio 中隐藏第二个预览 XML?

第二个布局未在Android Studio中显示为包含标签

如何在Android Honeycomb中向操作栏添加第二个下拉列表?

从第二个 Activity 返回到 Android Studio 中的 MainActivity 时出错

如何在Android应用程序中单击按钮以打开第二个活动

从Android应用程序中的第二个线程更新视图

如何从Android中的json数组读取第二个数组

如何在Android的第二个活动中显示信息

android eclipse如何使用intent在默认导航抽屉中显示第二个窗口

我正在尝试将第二个带有标题,描述的表单的用户输入添加到我的数据数组中,但是无法