【问题标题】:How to rectify this error iin Recyclerview with database如何使用数据库纠正 Recyclerview 中的此错误
【发布时间】:2016-06-28 03:30:32
【问题描述】:

当我试图在卡片视图中显示联系人时,当我单击按钮时,它显示致命异常错误,它不显示卡片视图任何人都可以出色地解决此编程问题,另一个错误是当我再次单击时它只显示一个卡片视图应用会被击中吗?

Showcontacts.java

public class ShowContacts extends Activity
{
private SQLiteDatabase db;
DbOperations doo;
private List<Contacts> contactsList;
private RecyclerView rv;
private Cursor c;
String names,email,address;
int phone;
String read_query = "select * from"+ ContactsTask.ContactsEntry.TABLE_NAME;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.recycle_layout);
    doo = new DbOperations(this);
           openDatabase();
    rv = (RecyclerView)findViewById(R.id.recyclerview);
    initializeData();
    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
    rv.setLayoutManager(linearLayoutManager);
    rv.setHasFixedSize(true);
    ContactAdapter cc = new ContactAdapter(contactsList);
    rv.setAdapter(cc);
}
public  void initializeData() {
    contactsList = new ArrayList<>();

    c = db.rawQuery(read_query,null);
    c.moveToFirst();
    while (!c.isLast())
    {
        names = c.getString(0);
        phone = c.getInt(1);
        email = c.getString(2);
        address = c.getString(3);
        contactsList.add(new Contacts(names,phone,email,address));
    }
    c.isLast();
    names = c.getString(0);
    phone = c.getInt(1);
    email = c.getString(2);
    address = c.getString(3);
    contactsList.add(new Contacts(names,phone,email,address));
}
private void openDatabase() {
    db = openOrCreateDatabase("contactDB", Context.MODE_PRIVATE,null);
}

}

Logacat 错误

  06-28 08:57:43.107 568-568/com.example.anilkumar.contactstask     E/AndroidRuntime: FATAL EXCEPTION: main
                                                                            java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.anilkumar.contactstask/com.example.anilkumar.contactstask.ShowContacts}: android.database.sqlite.SQLiteException: near "fromcontacts": syntax error: , while compiling: select * fromcontacts
                                                                                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
                                                                                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
                                                                                at android.app.ActivityThread.access$600(ActivityThread.java:123)
                                                                                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
                                                                                at android.os.Handler.dispatchMessage(Handler.java:99)
                                                                                at android.os.Looper.loop(Looper.java:137)
                                                                                at android.app.ActivityThread.main(ActivityThread.java:4424)
                                                                                at java.lang.reflect.Method.invokeNative(Native Method)
                                                                                at java.lang.reflect.Method.invoke(Method.java:511)
                                                                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
                                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
                                                                                at dalvik.system.NativeStart.main(Native Method)
                                                                             Caused by: android.database.sqlite.SQLiteException: near "fromcontacts": syntax error: , while compiling: select * fromcontacts
                                                                                at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method)
                                                                                at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:68)
                                                                                at android.database.sqlite.SQLiteProgram.compileSql(SQLiteProgram.java:143)
                                                                                at android.database.sqlite.SQLiteProgram.compileAndbindAllArgs(SQLiteProgram.java:361)
                                                                                at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:127)
                                                                                at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:94)
                                                                                at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:53)
                                                                                at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:47)
                                                                                at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1564)
                                                                                at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1538)
                                                                                at com.example.anilkumar.contactstask.ShowContacts.initializeData(ShowContacts.java:44)
                                                                                at com.example.anilkumar.contactstask.ShowContacts.onCreate(ShowContacts.java:34)
                                                                                at android.app.Activity.performCreate(Activity.java:4466)
                                                                                at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
                                                                                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
                                                                                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 
                                                                                at android.app.ActivityThread.access$600(ActivityThread.java:123) 
                                                                                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 
                                                                                at android.os.Handler.dispatchMessage(Handler.java:99) 
                                                                                at android.os.Looper.loop(Looper.java:137) 
                                                                                at android.app.ActivityThread.main(ActivityThread.java:4424) 
                                                                                at java.lang.reflect.Method.invokeNative(Native Method) 

另一个 logact 错误

  06-28 13:14:40.552 11252-11261/com.example.anilkumar.contactstask E/SQLiteDatabase: close() was never explicitly called on database '/data/data/com.example.anilkumar.contactstask/databases/contactDB' 
                                                                                android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
                                                                                    at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1943)
                                                                                    at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:1007)
                                                                                    at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:986)
                                                                                    at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:962)
                                                                                    at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:1043)
                                                                                    at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:1036)
                                                                                    at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:761)
                                                                                    at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:215)
                                                                                    at com.example.anilkumar.contactstask.ShowContacts.openDatabase(ShowContacts.java:66)
                                                                                    at com.example.anilkumar.contactstask.ShowContacts.onCreate(ShowContacts.java:33)
                                                                                    at android.app.Activity.performCreate(Activity.java:4466)
                                                                                    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
                                                                                    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
                                                                                    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
                                                                                    at android.app.ActivityThread.access$600(ActivityThread.java:123)
                                                                                    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
                                                                                    at android.os.Handler.dispatchMessage(Handler.java:99)
                                                                                    at android.os.Looper.loop(Looper.java:137)
                                                                                    at android.app.ActivityThread.main(ActivityThread.java:4424)
                                                                                    at java.lang.reflect.Method.invokeNative(Native Method)
                                                                                    at java.lang.reflect.Method.invoke(Method.java:511)
                                                                                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
                                                                                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)

【问题讨论】:

  • SQLiteException: near "fromcontacts": syntax error: , while compiling: select * fromcontacts“发件人”和“联系人”之间需要一个空格
  • 但是我正在初始化字符串变量中的联系人名称,一旦看到编程先生,我如何在联系人和联系人之间创建空间

标签: java android sqlite android-recyclerview


【解决方案1】:

更新一下

String read_query = "select * from"+ ContactsTask.ContactsEntry.TABLE_NAME;

String read_query = "select * from  "+ ContactsTask.ContactsEntry.TABLE_NAME;

始终关闭光标。更新你的 initializeData 方法

public  void initializeData() {


    try {
    contactsList = new ArrayList<>();
    try{
    c = db.rawQuery(read_query,null);
    c.moveToFirst();
    while (!c.isLast())
    {
        names = c.getString(0);
        phone = c.getInt(1);
        email = c.getString(2);
        address = c.getString(3);
        contactsList.add(new Contacts(names,phone,email,address));
    }
    c.isLast();
    names = c.getString(0);
    phone = c.getInt(1);
    email = c.getString(2);
    address = c.getString(3);
    contactsList.add(new Contacts(names,phone,email,address));
} catch (Exception e) {
   // exception handling
} finally {
   if(c != null){
       c.close();
   }
} 


}

【讨论】:

  • 先生,在我的程序问题中看到另一个 logact 错误
  • 再次发生错误先生..当我添加第一个联系人时,它显示正确显示卡视图并且它不显示剩余数据先生..发生同样的错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-09
相关资源
最近更新 更多