android-SQLite数据库后应用程序崩溃

android-SQLite数据库后应用程序崩溃,第1张

概述我有一部分代码在查询数据库后返回数组,但是当我运行应用程序时,它崩溃了//infoisthenameoftheobjectofthetypeDataBaseinfo.open();String[]data=info.queryAll();info.close();数据库代码的一部分,我试图在其中检索某一列的数据库的所有行publ

我有一部分代码在查询数据库后返回数组,但是当我运行应用程序时,它崩溃了

//info is the name of the object of the type DataBase    info.open();    String[] data = info.queryAll();    info.close();

数据库代码的一部分,我试图在其中检索某一列的数据库的所有行

public String[] queryAll() {    String[] columns = new String[] { KEY_name };    Cursor cursor = ourDatabase.query(DATABASE_table, columns, null, null,            null, null, null);    if (cursor != null) {        try {            final int nameColumnIndex =                     cursor.getColumnIndex(KEY_name);            List<String> names = new ArrayList<String>();            while (cursor.movetoNext()) {                names.add(cursor.getString(nameColumnIndex));            }            return names.toArray(new String[names.size()]);        } finally {            cursor.close();        }    }    return null;}

是因为我的数据库开头是空的吗?如果是的话,我该如何纠正代码?
所有建议都会有所帮助’
谢谢

LOGCAT

09-23 22:26:47.780: E/AndroIDRuntime(2825): FATAL EXCEPTION: main09-23 22:26:47.780: E/AndroIDRuntime(2825): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.contactList/com.example.contactList.Contacts}: androID.database.sqlite.sqliteException: no such table: mycontacts (code 1): , while compiling: SELECT Contact_name FROM mycontacts09-23 22:26:47.780: E/AndroIDRuntime(2825):     at androID.app.ActivityThread.performlaunchActivity(ActivityThread.java:2059)09-23 22:26:47.780: E/AndroIDRuntime(2825):     at androID.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)09-23 22:26:47.780: E/AndroIDRuntime(2825):     at androID.app.ActivityThread.access0(ActivityThread.java:130)09-23 22:26:47.780: E/AndroIDRuntime(2825):     at androID.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)09-23 22:26:47.780: E/AndroIDRuntime(2825):     at androID.os.Handler.dispatchMessage(Handler.java:99)09-23 22:26:47.780: E/AndroIDRuntime(2825):     at androID.os.Looper.loop(Looper.java:137)09-23 22:26:47.780: E/AndroIDRuntime(2825):     at androID.app.ActivityThread.main(ActivityThread.java:4745)09-23 22:26:47.780: E/AndroIDRuntime(2825):     at java.lang.reflect.Method.invokeNative(Native Method)09-23 22:26:47.780: E/AndroIDRuntime(2825):     at java.lang.reflect.Method.invoke(Method.java:511)09-23 22:26:47.780: E/AndroIDRuntime(2825):     at com.androID.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)09-23 22:26:47.780: E/AndroIDRuntime(2825):     at com.androID.internal.os.ZygoteInit.main(ZygoteInit.java:553)09-23 22:26:47.780: E/AndroIDRuntime(2825):     at dalvik.system.NativeStart.main(Native Method)09-23 22:26:47.780: E/AndroIDRuntime(2825): Caused by: androID.database.sqlite.sqliteException: no such table: mycontacts (code 1): , while compiling: SELECT Contact_name FROM mycontacts09-23 22:26:47.780: E/AndroIDRuntime(2825):     at androID.database.sqlite.sqliteConnection.nativePrepareStatement(Native Method)09-23 22:26:47.780: E/AndroIDRuntime(2825):     at androID.database.sqlite.sqliteConnection.acquirePreparedStatement(sqliteConnection.java:882)09-23 22:26:47.780: E/AndroIDRuntime(2825):     at androID.database.sqlite.sqliteConnection.prepare(sqliteConnection.java:493)09-23 22:26:47.780: E/AndroIDRuntime(2825):     at androID.database.sqlite.sqliteSession.prepare(sqliteSession.java:588)09-23 22:26:47.780: E/AndroIDRuntime(2825):     at androID.database.sqlite.sqliteProgram.<init>(sqliteProgram.java:58)09-23 22:26:47.780: E/AndroIDRuntime(2825):     at androID.database.sqlite.sqlitequery.<init>(sqlitequery.java:37)09-23 22:26:47.780: E/AndroIDRuntime(2825):     at androID.database.sqlite.sqliteDirectCursorDriver.query(sqliteDirectCursorDriver.java:44)09-23 22:26:47.780: E/AndroIDRuntime(2825):     at androID.database.sqlite.sqliteDatabase.rawqueryWithFactory(sqliteDatabase.java:1314)09-23 22:26:47.780: E/AndroIDRuntime(2825):     at androID.database.sqlite.sqliteDatabase.queryWithFactory(sqliteDatabase.java:1161)09-23 22:26:47.780: E/AndroIDRuntime(2825):     at androID.database.sqlite.sqliteDatabase.query(sqliteDatabase.java:1032)09-23 22:26:47.780: E/AndroIDRuntime(2825):     at androID.database.sqlite.sqliteDatabase.query(sqliteDatabase.java:1200)09-23 22:26:47.780: E/AndroIDRuntime(2825):     at com.example.contactList.DBContact.queryAll(DBContact.java:97)09-23 22:26:47.780: E/AndroIDRuntime(2825):     at com.example.contactList.Contacts.onCreate(Contacts.java:38)09-23 22:26:47.780: E/AndroIDRuntime(2825):     at androID.app.Activity.performCreate(Activity.java:5008)09-23 22:26:47.780: E/AndroIDRuntime(2825):     at androID.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)09-23 22:26:47.780: E/AndroIDRuntime(2825):     at androID.app.ActivityThread.performlaunchActivity(ActivityThread.java:2023)09-23 22:26:47.780: E/AndroIDRuntime(2825):     ... 11 more

数据库代码

public class DBContact {    public static final String KEY_ROWID = "_ID";    public static final String KEY_name = "Contact_name";    public static final String KEY_PERSONALPHONE = "Personal_Phonenumber";    public static final String KEY_HOMEPHONE = "Home_Phonenumber";    public static final String KEY_OFFICEPHONE = "Office_Phonenumber";    private static final String DATABASE_name = "Contact_name";    private static final String DATABASE_table = "mycontacts";    private static final int DATABASE_VERSION = 1;    // Instance of the class DbHelper    private DbHelper ourHelper;    private final Context ourContext;    private sqliteDatabase ourDatabase;    public static final String[] KEYS_ALL = { DBContact.KEY_ROWID,            DBContact.KEY_name, DBContact.KEY_PERSONALPHONE,            DBContact.KEY_HOMEPHONE, DBContact.KEY_OFFICEPHONE };    private static class DbHelper extends sqliteOpenHelper {        private static final String DATABASE_CREATE = "create table contacts (_ID integer primary key autoincrement, "                + "Contact_name text not null, Personal_Phonenumber text not null, Home_Phonenumber text not null, Office_Phone text not null); ";        public DbHelper(Context context) {            super(context, DATABASE_name, null, DATABASE_VERSION);            // Todo auto-generated constructor stub        }        @OverrIDe        public voID onCreate(sqliteDatabase ourDatabase) {            // Todo auto-generated method stub            try {                ourDatabase.execsql(DATABASE_CREATE);            } catch (sqlException e) {                e.printstacktrace();            }        }                   @OverrIDe        public voID onUpgrade(sqliteDatabase ourDatabase, int oldVersion, int newVersion) {            // Todo auto-generated method stub            ourDatabase.execsql("DROP table IF EXISTS contacts");            onCreate(ourDatabase);        }    }    // Context of constructor withhin our Class    public DBContact(Context c) {        ourContext = c;    }    // Opens the database    public DBContact open() throws sqlException {        // Constructor for DB Helper class takes in a Context        // Context is passed in is "ourContext" for within our class        ourHelper = new DbHelper(ourContext);        // Passes in DB name and Version        // ourDatabase is of type sqlite DataBase        ourDatabase = ourHelper.getWritableDatabase();        return this;    }    // Closes the database connection    public voID close() {        // refer to our DbHelper and close the sqlite DataBase Helper        ourHelper.close();        ourHelper = null;        ourDatabase = null;    }    // Deletes the Row    public boolean deleteRow(long rowID) {        return ourDatabase.delete(DATABASE_table, DBContact.KEY_ROWID + "="                + rowID, null) > 0;    }    public String[] queryAll() {        String[] columns = new String[] { KEY_name };        Cursor cursor = ourDatabase.query(DATABASE_table, columns, null, null,                null, null, null);        if (cursor != null) {            try {        final int nameColumnIndex = cursor.getColumnIndex(KEY_name);        List<String> names = new ArrayList<String>();        cursor.movetoFirst();        while (cursor.movetoNext()) {            names.add(cursor.getString(nameColumnIndex));        }        return names.toArray(new String[names.size()]);    } finally {        cursor.close();   }        }        return null;    }    /*public Cursor queryAll(){    String[] columns = new String[] {KEY_name};        return   ourDatabase.query(DATABASE_table, columns, null, null, null, null, null);    if(data == null){        columns[0] = "NO CONTACTS PRESENT";        return columns;    }else{        return columns;    }    }*/    public long newRow(String name, String pphone, String hphone, String ophone) {        // Todo auto-generated method stub        ContentValues newvalue = new ContentValues();        newvalue.put(KEY_name, name);        newvalue.put(KEY_PERSONALPHONE, pphone);        newvalue.put(KEY_HOMEPHONE, hphone);        newvalue.put(KEY_OFFICEPHONE, ophone);        return ourDatabase.insert(DATABASE_table, null, newvalue);    }    public String getname(Long l) {        // Todo auto-generated method stub        String[] columns = new String[] { KEY_ROWID, KEY_name,                KEY_PERSONALPHONE, KEY_HOMEPHONE, KEY_OFFICEPHONE };        Cursor c = ourDatabase.query(DATABASE_table, columns, KEY_ROWID + "="                + 1, null, null, null, null);        if (c != null) {            c.movetoFirst();            String name = c.getString(1);            return name;        }        return null;    }    public String getPphone(Long l) {        // Todo auto-generated method stub        String[] columns = new String[] { KEY_ROWID, KEY_name,                KEY_PERSONALPHONE, KEY_HOMEPHONE, KEY_OFFICEPHONE };        Cursor c = ourDatabase.query(DATABASE_table, columns, KEY_ROWID + "="                + 1, null, null, null, null);        if (c != null) {            c.movetoFirst();            String Pphone = c.getString(2);            return Pphone;        }        return null;    }    public String getHphone(Long l) {        // Todo auto-generated method stub        String[] columns = new String[] { KEY_ROWID, KEY_name,                KEY_PERSONALPHONE, KEY_HOMEPHONE, KEY_OFFICEPHONE };        Cursor c = ourDatabase.query(DATABASE_table, columns, KEY_ROWID + "="                + 1, null, null, null, null);        if (c != null) {            c.movetoFirst();            String Hphone = c.getString(3);            return Hphone;        }        return null;    }    public String getophone(Long l) {        // Todo auto-generated method stub        String[] columns = new String[] { KEY_ROWID, KEY_name,                KEY_PERSONALPHONE, KEY_HOMEPHONE, KEY_OFFICEPHONE };        Cursor c = ourDatabase.query(DATABASE_table, columns, KEY_ROWID + "="                + 1, null, null, null, null);        if (c != null) {            c.movetoFirst();            String Ophone = c.getString(4);            return Ophone;        }        return null;    }}

解决方法:

  private static final String DATABASE_CREATE = "create table contacts (_ID integer primary key autoincrement, "                + "Contact_name text not null, Personal_Phonenumber text not null, Home_Phonenumber text not null, Office_Phone text not null); ";

上面的代码与Office_Phone的声明不匹配.也别人怎么说.

总结

以上是内存溢出为你收集整理的android-SQLite数据库后应用程序崩溃全部内容,希望文章能够帮你解决android-SQLite数据库后应用程序崩溃所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1075005.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-26
下一篇2022-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存