错误SQLiteDatabase的Andr​​oid [英] Error in SQLiteDatabase Android

查看:166
本文介绍了错误SQLiteDatabase的Andr​​oid的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

目前即时通讯正在实施SQLiteDatabase到我的Andr​​oid应用程序。所以我想创建一个表名为TABLE_LOGIN并存储登录用户的所有数据,但我遇到了一个错误,说犯规存在的列1。我检查,我也把列创建表时
下面是我的code:

  //登录表列名
私有静态最后弦乐KEY_ID =ID;
私有静态最后弦乐KEY_NAME =名;
私有静态最后弦乐KEY_CNAME =CNAME
私有静态最后弦乐KEY_EMAIL =电子邮件;
私有静态最后弦乐KEY_UID =UID;
私有静态最后弦乐KEY_CREATED_AT =created_at;公共无效的onCreate(SQLiteDatabase DB){
    字符串CREATE_LOGIN_TABLE =CREATE TABLE+ TABLE_LOGIN +(
            + KEY_ID +INTEGER PRIMARY KEY
            + KEY_NAME +TEXT
            + KEY_CNAME +TEXT
            + KEY_EMAIL +TEXT独一无二的,
            + KEY_UID +TEXT
            + KEY_CREATED_AT +TEXT+);
    db.execSQL(CREATE_LOGIN_TABLE);
}

这是我的logcat的:

  1月8日至27日:29:57.336:E / JSON(531): {\"tag\":\"login\",\"success\":1,\"error\":0,\"uid\":\"5033b1eeedde88.60881196\",\"user\":{\"name\":\"a\",\"cname\":\"a\",\"email\":\"a@gmail.com\",\"created_at\":\"2012-08-22 0时06分06秒,的updated_at:空}}
1月8日至27日:29:57.486:E /数据库(531):错误插入的uid = 5033b1eeedde88.60881196 created_at = 2012-08-22 0时06分06秒email=a@gmail.com的cname =名称=一
1月8日至27日:29:57.486:E /数据库(531):android.database.sqlite.SQLiteException:表登录没有命名的cname列:,在编译:INSERT INTO登录(UID,created_at,电子邮件,CNAME名) VALUES(?,?,???);
1月8日至27日:29:57.486:E /数据库(531):在android.database.sqlite.SQLiteCompiledSql.native_compile(本机方法)
1月8日至27日:29:57.486:E /数据库(531):在android.database.sqlite.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:91)
1月8日至27日:29:57.486:E /数据库(531):在android.database.sqlite.SQLiteCompiledSql<&初始化GT;(SQLiteCompiledSql.java:64)。
1月8日至27日:29:57.486:E /数据库(531):在android.database.sqlite.SQLiteProgram<&初始化GT;(SQLiteProgram.java:80)。
1月8日至27日:29:57.486:E /数据库(531):在android.database.sqlite.SQLiteStatement<&初始化GT;(SQLiteStatement.java:36)。
1月8日至27日:29:57.486:E /数据库(531):在android.database.sqlite.SQLiteDatabase.compileStatement(SQLiteDatabase.java:1145)
1月8日至27日:29:57.486:E /数据库(531):在android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1536)
1月8日至27日:29:57.486:E /数据库(531):在android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1410)
1月8日至27日:29:57.486:E /数据库(531):在com.stts.sparetimetradingsystem.library.DatabaseHandlerEmployer.addUser(DatabaseHandlerEmployer.java:72)
1月8日至27日:29:57.486:E /数据库(531):在com.stts.sparetimetradingsystem.employer.LoginEmployerActivity$LoginEmployer$1.run(LoginEmployerActivity.java:129)
1月8日至27日:29:57.486:E /数据库(531):在android.os.Handler.handleCallback(Handler.java:587)
1月8日至27日:29:57.486:E /数据库(531):在android.os.Handler.dispatchMessage(Handler.java:92)
1月8日至27日:29:57.486:E /数据库(531):在android.os.Looper.loop(Looper.java:123)
1月8日至27日:29:57.486:E /数据库(531):在android.app.ActivityThread.main(ActivityThread.java:4627)
1月8日至27日:29:57.486:E /数据库(531):在java.lang.reflect.Method.invokeNative(本机方法)
1月8日至27日:29:57.486:E /数据库(531):在java.lang.reflect.Method.invoke(Method.java:521)
1月8日至27日:29:57.486:E /数据库(531):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:868)
1月8日至27日:29:57.486:E /数据库(531):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
1月8日至27日:29:57.486:E /数据库(531):在dalvik.system.NativeStart.main(本机方法)
1月8日至27日:29:58.736:E / AndroidRuntime(531):致命异常:主要
1月8日至27日:29:58.736:E / AndroidRuntime(531):了java.lang.RuntimeException:无法破坏活动{com.stts.sparetimetradingsystem / com.stts.sparetimetradingsystem.employer.HomepageEmployerActivity}:显示java.lang.NullPointerException
1月8日至27日:29:58.736:E / AndroidRuntime(531):在android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3655)
1月8日至27日:29:58.736:E / AndroidRuntime(531):在android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3673)
1月8日至27日:29:58.736:E / AndroidRuntime(531):在android.app.ActivityThread.access $ 2900(ActivityThread.java:125)
1月8日至27日:29:58.736:E / AndroidRuntime(531):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:2066)
1月8日至27日:29:58.736:E / AndroidRuntime(531):在android.os.Handler.dispatchMessage(Handler.java:99)
1月8日至27日:29:58.736:E / AndroidRuntime(531):在android.os.Looper.loop(Looper.java:123)
1月8日至27日:29:58.736:E / AndroidRuntime(531):在android.app.ActivityThread.main(ActivityThread.java:4627)
1月8日至27日:29:58.736:E / AndroidRuntime(531):在java.lang.reflect.Method.invokeNative(本机方法)
-27 01:29:58.736:E / AndroidRuntime(531):在java.lang.reflect.Method.invoke(Method.java:521)
1月8日至27日:29:58.736:E / AndroidRuntime(531):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:868)
1月8日至27日:29:58.736:E / AndroidRuntime(531):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
1月8日至27日:29:58.736:E / AndroidRuntime(531):在dalvik.system.NativeStart.main(本机方法)
1月8日至27日:29:58.736:E / AndroidRuntime(531):致:显示java.lang.NullPointerException
1月8日至27日:29:58.736:E / AndroidRuntime(531):在com.stts.sparetimetradingsystem.employer.HomepageEmployerActivity.onDestroy(HomepageEmployerActivity.java:315)
1月8日至27日:29:58.736:E / AndroidRuntime(531):在android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3642​​)
1月8日至27日:29:58.736:E / AndroidRuntime(531):11 ...更多

修改插入用户数据code:

 公共无效ADDUSER(字符串名称,字符串CNAME,字符串电子邮件,UID字符串,字符串created_at){
        SQLiteDatabase分贝= this.getWritableDatabase();        ContentValues​​值=新ContentValues​​();
        values​​.put(KEY_NAME,名); // 名称
        values​​.put(KEY_CNAME,CNAME); // CNAME
        values​​.put(KEY_EMAIL,电子邮件); //电子邮件
        values​​.put(KEY_UID,UID); // UID
        values​​.put(KEY_CREATED_AT,created_at); //创建在        //插入行
        db.insert(TABLE_LOGIN,空,价值);
        db.close(); //关闭数据库连接
    }


解决方案

转到设置 - > 管理应用 - > 您的应用程序 - > 清除所有应用程序数据

也许的它使用存储在手机你在表中添加此列前旧的表。

修改:我想有一个与您正在使用的字符串连接一个小问题。

 字符串CREATE_LOGIN_TABLE =CREATE TABLE+ TABLE_LOGIN +(
      + KEY_ID +INTEGER PRIMARY KEY,+ KEY_NAME +TEXT+ KEY_CNAME +TEXT+ KEY_EMAIL +TEXT独一无二的,+ KEY_UID +TEXT+ KEY_CREATED_AT +TEXT);

Currently Im am implementing SQLiteDatabase into my android application. So i wanted to create a table called TABLE_LOGIN and store all the data of the login user but i met with a error saying 1 of the column doesnt exist. I check and i did put the column when the table is created Below is my code:

// Login Table Columns names
private static final String KEY_ID = "id";
private static final String KEY_NAME = "name";
private static final String KEY_CNAME = "cname";
private static final String KEY_EMAIL = "email";
private static final String KEY_UID = "uid";
private static final String KEY_CREATED_AT = "created_at";

public void onCreate(SQLiteDatabase db) {
    String CREATE_LOGIN_TABLE = "CREATE TABLE " + TABLE_LOGIN + "("
            + KEY_ID + " INTEGER PRIMARY KEY," 
            + KEY_NAME + " TEXT,"
            + KEY_CNAME + " TEXT,"
            + KEY_EMAIL + " TEXT UNIQUE,"
            + KEY_UID + " TEXT,"
            + KEY_CREATED_AT + " TEXT" + ")";
    db.execSQL(CREATE_LOGIN_TABLE);
}

This is my logcat:

08-27 01:29:57.336: E/JSON(531): {"tag":"login","success":1,"error":0,"uid":"5033b1eeedde88.60881196","user":{"name":"a","cname":"a","email":"a@gmail.com","created_at":"2012-08-22 00:06:06","updated_at":null}}
08-27 01:29:57.486: E/Database(531): Error inserting uid=5033b1eeedde88.60881196 created_at=2012-08-22 00:06:06 email=a@gmail.com cname=a name=a
08-27 01:29:57.486: E/Database(531): android.database.sqlite.SQLiteException: table login has no column named cname: , while compiling: INSERT INTO login(uid, created_at, email, cname, name) VALUES(?, ?, ?, ?, ?);
08-27 01:29:57.486: E/Database(531):    at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method)
08-27 01:29:57.486: E/Database(531):    at android.database.sqlite.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:91)
08-27 01:29:57.486: E/Database(531):    at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:64)
08-27 01:29:57.486: E/Database(531):    at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:80)
08-27 01:29:57.486: E/Database(531):    at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:36)
08-27 01:29:57.486: E/Database(531):    at android.database.sqlite.SQLiteDatabase.compileStatement(SQLiteDatabase.java:1145)
08-27 01:29:57.486: E/Database(531):    at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1536)
08-27 01:29:57.486: E/Database(531):    at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1410)
08-27 01:29:57.486: E/Database(531):    at com.stts.sparetimetradingsystem.library.DatabaseHandlerEmployer.addUser(DatabaseHandlerEmployer.java:72)
08-27 01:29:57.486: E/Database(531):    at com.stts.sparetimetradingsystem.employer.LoginEmployerActivity$LoginEmployer$1.run(LoginEmployerActivity.java:129)
08-27 01:29:57.486: E/Database(531):    at android.os.Handler.handleCallback(Handler.java:587)
08-27 01:29:57.486: E/Database(531):    at android.os.Handler.dispatchMessage(Handler.java:92)
08-27 01:29:57.486: E/Database(531):    at android.os.Looper.loop(Looper.java:123)
08-27 01:29:57.486: E/Database(531):    at android.app.ActivityThread.main(ActivityThread.java:4627)
08-27 01:29:57.486: E/Database(531):    at java.lang.reflect.Method.invokeNative(Native Method)
08-27 01:29:57.486: E/Database(531):    at java.lang.reflect.Method.invoke(Method.java:521)
08-27 01:29:57.486: E/Database(531):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
08-27 01:29:57.486: E/Database(531):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
08-27 01:29:57.486: E/Database(531):    at dalvik.system.NativeStart.main(Native Method)
08-27 01:29:58.736: E/AndroidRuntime(531): FATAL EXCEPTION: main
08-27 01:29:58.736: E/AndroidRuntime(531): java.lang.RuntimeException: Unable to destroy activity {com.stts.sparetimetradingsystem/com.stts.sparetimetradingsystem.employer.HomepageEmployerActivity}: java.lang.NullPointerException
08-27 01:29:58.736: E/AndroidRuntime(531):  at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3655)
08-27 01:29:58.736: E/AndroidRuntime(531):  at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3673)
08-27 01:29:58.736: E/AndroidRuntime(531):  at android.app.ActivityThread.access$2900(ActivityThread.java:125)
08-27 01:29:58.736: E/AndroidRuntime(531):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
08-27 01:29:58.736: E/AndroidRuntime(531):  at android.os.Handler.dispatchMessage(Handler.java:99)
08-27 01:29:58.736: E/AndroidRuntime(531):  at android.os.Looper.loop(Looper.java:123)
08-27 01:29:58.736: E/AndroidRuntime(531):  at android.app.ActivityThread.main(ActivityThread.java:4627)
08-27 01:29:58.736: E/AndroidRuntime(531):  at java.lang.reflect.Method.invokeNative(Native Method)
-27 01:29:58.736: E/AndroidRuntime(531):    at java.lang.reflect.Method.invoke(Method.java:521)
08-27 01:29:58.736: E/AndroidRuntime(531):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
08-27 01:29:58.736: E/AndroidRuntime(531):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
08-27 01:29:58.736: E/AndroidRuntime(531):  at dalvik.system.NativeStart.main(Native Method)
08-27 01:29:58.736: E/AndroidRuntime(531): Caused by: java.lang.NullPointerException
08-27 01:29:58.736: E/AndroidRuntime(531):  at com.stts.sparetimetradingsystem.employer.HomepageEmployerActivity.onDestroy(HomepageEmployerActivity.java:315)
08-27 01:29:58.736: E/AndroidRuntime(531):  at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3642)
08-27 01:29:58.736: E/AndroidRuntime(531):  ... 11 more

EDIT INSERT USER DATA CODE:

public void addUser(String name, String cname, String email, String uid, String created_at) {
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();
        values.put(KEY_NAME, name); // Name
        values.put(KEY_CNAME, cname); // CName
        values.put(KEY_EMAIL, email); // Email
        values.put(KEY_UID, uid); // UID
        values.put(KEY_CREATED_AT, created_at); // Created At

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

解决方案

Go to Settings -> Manage Applications -> Your Application -> Clear all application data.

Maybe it is using an old table stored in the phone before you added this column in your table.

EDIT : I think there is a slight problem with the String concatenation that you are using.

String CREATE_LOGIN_TABLE = "CREATE TABLE " + TABLE_LOGIN + "("
      + KEY_ID + " INTEGER PRIMARY KEY, " + KEY_NAME+" TEXT, "+KEY_CNAME+" TEXT, "+KEY_EMAIL+" TEXT UNIQUE, "+KEY_UID+" TEXT, "+KEY_CREATED_AT+" TEXT)";

这篇关于错误SQLiteDatabase的Andr​​oid的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆