程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Android SQLite ContentValues未插入大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Android sqlite ContentValues未插入?

开发过程中遇到Android sqlite ContentValues未插入的问题如何解决?下面主要结合日常开发的经验,给出你关于Android sqlite ContentValues未插入的解决方法建议,希望对你解决Android sqlite ContentValues未插入有所启发或帮助;

通常,最好将包装方法(在您的情况下@H_944_3@addAlarm, editAlarm, deletealarm)分隔在单独的类中。我建议您使用名称创建一个新类,@H_944_3@myApPDAtasource并在该类中添加所有包装方法,以使您的生活更轻松。

该类的代码如下所示:

@H_944_3@ public class studymanagerDatasource {

    sqliteOpenHelper dbHelper;
    sqliteDatabase database;

public studymanagerDatasource(Context context) {
            dbHelper = new DatabaseAdapter(context);

        }

public voID addAlarm(Alarm alarm)
{

    // open the database connection 
    open();
    ContentValues values = new ContentValues();

    values.put(KEY_DESC, alarm.getDesc());
    values.put(KEY_REPEAT_DAY, alarm.getRepeatDay());
    values.put(KEY_REPEAT_TYPE, alarm.getRepeatType());
    values.put(KEY_CALENDAR, Long.toString(alarm.getCalendarInMillis()));
    values.put(KEY_APP, alarm.getApp());
    values.put(KEY_ACTIVE, alarm.getActive());
    database.insert(table_name, null, values);
    // I will suggest to keep the connection to the database open when your app is 
    // running, the recommended time to close the connection is when your app is 
    //going to pause/stop.
    close();
}

public voID open() {
        database = dbHelper.getWritableDatabase();
        Log.i(LOG_TAG, "Database Opened");
    } // end method open

public voID close() {
        Log.i(LOG_TAG, "Database Closed");
        dbHelper.close();
    } // end method close
}

解决方法

我正在尝试将值插入@H_944_3@sqliteAndroid应用程序数据库。我正在编写以下代码:

@H_944_3@public class DataBaseAdapter extends sqliteOpenHelper 
{
private static final int DATABASE_VERSION = 1;

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

// Alarm table name
private static final String table_NAME = "Alarms";

//AlarmTable @R_197_8620@ns names
private static final String KEY_ALARM_ID = "Id";
private static final String KEY_DESC = "Description";
private static final String KEY_REPEAT_DAY = "RepeatDay";
private static final String KEY_REPEAT_TYPE = "REPEAT_TYPE";
private static final String KEY_CALENDAR = "Calendar";
private static final String KEY_APP = "Device";
private static final String KEY_ACTIVE = "Active";

//creaTing database
public DataBaseAdapter(Context con)
{
    super(con,DATABASE_NAME,null,DATABASE_VERSION);
}

//creaTing table
@Override
public void onCreate(sqliteDatabase db)
{
    String create_tABLE = "create table "+TABLE_NAME+"("
            +KEY_ALARM_ID+" INTEGER PRIMary key AUTOINCREMENT,"+KEY_DESC+" TEXT,"+KEY_REPEAT_DAY+ " TEXT,"
            +KEY_REPEAT_TYPE+" Integer,"+KEY_CALENDAR+" TEXT,"+KEY_APP+" TEXT,"+KEY_ACTIVE+" Integer );";

    db.execSQL(create_tABLE);
}
//updating database
@Override
public void onUpgrade(sqliteDatabase db,int oldVersion,int newVersion)
{
    // Drop older table if existed
    db.execSQL("drop table IF EXISTS " + TABLE_Name);

    // create tables again
    onCreate(db);
}
public void addAlarm(Alarm alarm)
{
    sqliteDatabase db = this.getWritableDatabase();
    ContentValues values = new ContentValues();

    values.put(KEY_DESC,alarm.getDesc());
    values.put(KEY_REPEAT_DAY,alarm.getRepeatDay());
    values.put(KEY_REPEAT_TYPE,alarm.getRepeatType());
    values.put(KEY_CALENDAR,Long.toString(alarm.getCalendarInMillis()));
    values.put(KEY_APP,alarm.getApp());
    values.put(KEY_ACTIVE,alarm.getActive());

    db.insert(TABLE_NAME,values);
    db.close();
}

我不知道是什么问题。所以我发布了Logcat:

@H_944_3@    03-13 17:09:33.388: D/sqliteDatabaseCpp(1095): Registering sqlite logging func: /data/data/com.example.devicecontrolpanel/databases/AlarmSystem
    03-13 17:09:33.408: D/sqliteDatabaseCpp(1095): DB info: open db,path = /data/data/com.example.devicecontrolpanel/databases,key = 9lYvmWqw,flag = 6,cAnnot stat file,errno = 2,message = No such file or directory
    03-13 17:09:33.408: D/sqliteDatabaseCpp(1095): DB info: path = /data/data/com.example.devicecontrolpanel/databases,handle: 0x8ccc98,type: w,r/w: (0,1),mode: truncate,disk free size: 777 M
    03-13 17:09:33.588: D/sqliteDatabaseCpp(1095): DB info: close db,handle = 0x8ccc98,type = w,r/w = (0,0)
    03-13 17:09:33.588: D/sqliteDatabaseCpp(1095): DB info: open db,file size = 4096
    03-13 17:09:33.588: D/sqliteDatabaseCpp(1095): DB info: path = /data/data/com.example.devicecontrolpanel/databases,handle: 0x8f3100,handle = 0x8f3100,0)
    03-13 17:09:33.598: D/AndroidRuntime(1095): ShutTing down VM
    03-13 17:09:33.598: W/dalvikvm(1095): threadid=1: thread exiTing with uncaught exception (group=0x40ae0228)
    03-13 17:09:33.618: E/AndroidRuntime(1095): FATAL EXCEPTION: main
    03-13 17:09:33.618: E/AndroidRuntime(1095): java.lang.RuntimeException: Unable to start activity ComponenTinfo{Com.example.devicecontrolpanel/com.example.devicecontrolpanel.Main}: java.lang.IllegalStateException: database /data/data/com.example.devicecontrolpanel/databases/AlarmSystem (conn# 0) already closed
    03-13 17:09:33.618: E/AndroidRuntime(1095):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2205)
    03-13 17:09:33.618: E/AndroidRuntime(1095):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2240)
    03-13 17:09:33.618: E/AndroidRuntime(1095):     at android.app.ActivityThread.access$600(ActivityThread.java:139)
    03-13 17:09:33.618: E/AndroidRuntime(1095):     at android.app.ActivityThread$H.handlemessage(ActivityThread.java:1262)
    03-13 17:09:33.618: E/AndroidRuntime(1095):     at android.os.Handler.dispatchmessage(Handler.java:99)
    03-13 17:09:33.618: E/AndroidRuntime(1095):     at android.os.Looper.loop(Looper.java:156)
    03-13 17:09:33.618: E/AndroidRuntime(1095):     at android.app.ActivityThread.main(ActivityThread.java:4987)
    03-13 17:09:33.618: E/AndroidRuntime(1095):     at java.lang.reflect.Method.invokeNative(Native Method)
    03-13 17:09:33.618: E/AndroidRuntime(1095):     at java.lang.reflect.Method.invoke(Method.java:511)
    03-13 17:09:33.618: E/AndroidRuntime(1095):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    03-13 17:09:33.618: E/AndroidRuntime(1095):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    03-13 17:09:33.618: E/AndroidRuntime(1095):     at dalvik.system.NativeStart.main(Native Method)
    03-13 17:09:33.618: E/AndroidRuntime(1095): Caused by: java.lang.IllegalStateException: database /data/data/com.example.devicecontrolpanel/databases/AlarmSystem (conn# 0) already closed
    03-13 17:09:33.618: E/AndroidRuntime(1095):     at android.database.sqlite.sqliteDatabase.verifyDbIsOpen(sqliteDatabase.java:2194)
    03-13 17:09:33.618: E/AndroidRuntime(1095):     at android.database.sqlite.sqliteDatabase.lock(sqliteDatabase.java:448)
    03-13 17:09:33.618: E/AndroidRuntime(1095):     at android.database.sqlite.sqliteDatabase.lock(sqliteDatabase.java:435)
    03-13 17:09:33.618: E/AndroidRuntime(1095):     at android.database.sqlite.sqliteQuery.fillWindow(sqliteQuery.java:79)
    03-13 17:09:33.618: E/AndroidRuntime(1095):     at android.database.sqlite.sqlitecursor.fillWindow(sqlitecursor.java:176)
    03-13 17:09:33.618: E/AndroidRuntime(1095):     at android.database.sqlite.sqlitecursor.getCount(sqlitecursor.java:168)
    03-13 17:09:33.618: E/AndroidRuntime(1095):     at com.example.devicecontrolpanel.DataBaseAdapter.getAlarmsCount(DataBaseAdapter.java:190)
    03-13 17:09:33.618: E/AndroidRuntime(1095):     at com.example.devicecontrolpanel.DataBaseAdapter.getAllAlarmList(DataBaseAdapter.java:117)
    03-13 17:09:33.618: E/AndroidRuntime(1095):     at com.example.devicecontrolpanel.Main.onCreate(Main.java:19)
    03-13 17:09:33.618: E/AndroidRuntime(1095):     at android.app.Activity.performCreate(Activity.java:4538)
    03-13 17:09:33.618: E/AndroidRuntime(1095):     at android.app.instrumentation.callActivityOnCreate(instrumentation.java:1071)
    03-13 17:09:33.618: E/AndroidRuntime(1095):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2161)
    03-13 17:09:33.618: E/AndroidRuntime(1095):     ... 11 more
    03-13 17:16:48.144: D/sqliteDatabaseCpp(2080): Registering sqlite logging func: /data/data/com.example.devicecontrolpanel/databases/AlarmSystem
    03-13 17:16:48.144: D/sqliteDatabaseCpp(2080): DB info: open db,message = No such file or directory
    03-13 17:16:48.164: D/sqliteDatabaseCpp(2080): DB info: path = /data/data/com.example.devicecontrolpanel/databases,handle: 0x86b220,disk free size: 777 M
    03-13 17:16:48.384: D/sqliteDatabaseCpp(2080): DB info: close db,handle = 0x86b220,0)
    03-13 17:16:48.384: D/sqliteDatabaseCpp(2080): DB info: open db,file size = 5120
    03-13 17:16:48.384: D/sqliteDatabaseCpp(2080): DB info: path = /data/data/com.example.devicecontrolpanel/databases,handle: 0x897800,handle = 0x897800,0)
    03-13 17:16:48.394: D/AndroidRuntime(2080): ShutTing down VM
    03-13 17:16:48.414: W/dalvikvm(2080): threadid=1: thread exiTing with uncaught exception (group=0x40ae0228)
    03-13 17:16:48.424: E/AndroidRuntime(2080): FATAL EXCEPTION: main
    03-13 17:16:48.424: E/AndroidRuntime(2080): java.lang.RuntimeException: Unable to start activity ComponenTinfo{Com.example.devicecontrolpanel/com.example.devicecontrolpanel.Main}: java.lang.IllegalStateException: database /data/data/com.example.devicecontrolpanel/databases/AlarmSystem (conn# 0) already closed
    03-13 17:16:48.424: E/AndroidRuntime(2080):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2205)
    03-13 17:16:48.424: E/AndroidRuntime(2080):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2240)
    03-13 17:16:48.424: E/AndroidRuntime(2080):     at android.app.ActivityThread.access$600(ActivityThread.java:139)
    03-13 17:16:48.424: E/AndroidRuntime(2080):     at android.app.ActivityThread$H.handlemessage(ActivityThread.java:1262)
    03-13 17:16:48.424: E/AndroidRuntime(2080):     at android.os.Handler.dispatchmessage(Handler.java:99)
    03-13 17:16:48.424: E/AndroidRuntime(2080):     at android.os.Looper.loop(Looper.java:156)
    03-13 17:16:48.424: E/AndroidRuntime(2080):     at android.app.ActivityThread.main(ActivityThread.java:4987)
    03-13 17:16:48.424: E/AndroidRuntime(2080):     at java.lang.reflect.Method.invokeNative(Native Method)
    03-13 17:16:48.424: E/AndroidRuntime(2080):     at java.lang.reflect.Method.invoke(Method.java:511)
    03-13 17:16:48.424: E/AndroidRuntime(2080):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    03-13 17:16:48.424: E/AndroidRuntime(2080):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    03-13 17:16:48.424: E/AndroidRuntime(2080):     at dalvik.system.NativeStart.main(Native Method)
    03-13 17:16:48.424: E/AndroidRuntime(2080): Caused by: java.lang.IllegalStateException: database /data/data/com.example.devicecontrolpanel/databases/AlarmSystem (conn# 0) already closed
    03-13 17:16:48.424: E/AndroidRuntime(2080):     at android.database.sqlite.sqliteDatabase.verifyDbIsOpen(sqliteDatabase.java:2194)
    03-13 17:16:48.424: E/AndroidRuntime(2080):     at android.database.sqlite.sqliteDatabase.lock(sqliteDatabase.java:448)
    03-13 17:16:48.424: E/AndroidRuntime(2080):     at android.database.sqlite.sqliteDatabase.lock(sqliteDatabase.java:435)
    03-13 17:16:48.424: E/AndroidRuntime(2080):     at android.database.sqlite.sqliteQuery.fillWindow(sqliteQuery.java:79)
    03-13 17:16:48.424: E/AndroidRuntime(2080):     at android.database.sqlite.sqlitecursor.fillWindow(sqlitecursor.java:176)
    03-13 17:16:48.424: E/AndroidRuntime(2080):     at android.database.sqlite.sqlitecursor.getCount(sqlitecursor.java:168)
    03-13 17:16:48.424: E/AndroidRuntime(2080):     at com.example.devicecontrolpanel.DataBaseAdapter.getAlarmsCount(DataBaseAdapter.java:196)
    03-13 17:16:48.424: E/AndroidRuntime(2080):     at com.example.devicecontrolpanel.DataBaseAdapter.getAllAlarmList(DataBaseAdapter.java:123)
    03-13 17:16:48.424: E/AndroidRuntime(2080):     at com.example.devicecontrolpanel.Main.onCreate(Main.java:19)
    03-13 17:16:48.424: E/AndroidRuntime(2080):     at android.app.Activity.performCreate(Activity.java:4538)
    03-13 17:16:48.424: E/AndroidRuntime(2080):     at android.app.instrumentation.callActivityOnCreate(instrumentation.java:1071)
    03-13 17:16:48.424: E/AndroidRuntime(2080):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2161)
    03-13 17:16:48.424: E/AndroidRuntime(2080):     ... 11 more

大佬总结

以上是大佬教程为你收集整理的Android SQLite ContentValues未插入全部内容,希望文章能够帮你解决Android SQLite ContentValues未插入所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。