当前位置: 首页 > 知识库问答 >
问题:

记录在数据库中

仲孙磊
2023-03-14

尝试站点parse.com将数据加载到数据库中

@Override
  public void onClick(View v) {


    cv = new ContentValues();


    db = dbHelper.getWritableDatabase();        

    switch (v.getId()) {

    case R.id.btnAdd:

            query = new ParseQuery("mens");
               query.setLimit(50);             
                query.findInBackground(new FindCallback() {
                public void done(List<ParseObject> mens, ParseException e) {
                  if (e == null) {
                        for ( int i = 0; i < 50; i++) {    

                             stGet = mens.get(i).getString("Str");                                 
                             cv.put("email", stGet);

                             long rowID = db.insert("mytable", null, cv);

                            }                
                     } 
                  }
                 });             

      break;

    dbHelper.close();
}

类DBHelper扩展了SQLiteOpenHelper{

    public DBHelper(Context context) {
          super(context, "myDB", null, 1);

    }

    @Override
    public void onCreate(SQLiteDatabase db) {

      db.execSQL("create table mytable ("
          + "id integer primary key autoincrement,"
          + "email text" + ");");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
  }

在模拟器上获取

java.lang.IllegalStateExcema:尝试重新打开已关闭的对象:SQLiteDatabase: /data/data/com.project.test/databases/myDBandroid.database.sqlite.SQLiteClosable.acquire参考(SQLiteClosable.java:55)android.database.sqlite.SQLiteDatabase.insert在android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1339)在com.project.test.主活动$1.done(主ctivity.java:347)在com.parse.FindCallback.internal完成(FindCallback.java:48)在com.parse.FindCallback.internal完成(FindCallback.java:33)在com. parse。在com. parse. onPostExecute的背景任务。在android. os.在android. os.在android. os.在android. os.在android. os.在android. app.ActivityThread. main(ActivityThread. java: 5103)在java. lang. reff。方法。方法调用(方法. java: 525)在com. android. interal. os。ZygoteInit$method odAndArgsCaller. run(ZygoteInit. java: 737)在com. android. interal. os。在dalvik. system上的ZygoteInit. main(ZygoteInit. java: 553)。NativeStart. main(本机方法)

在真正的设备上

致命异常:main java.lang.IllegalStateException:android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1671)中未打开的数据库位于android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1571),位于com.project.test.MainActivity$1.done(MainActivity.java:347),位于com.parse.FindCallback.internalDone(FindCallback.java:48)在com.parse.FindCallback.internalDone(FindCallback.java:33)在com.parse.BackgroundTask.onpostsecute(BackgroundTask.java:50)在com.parse.BackgroundTask.onpostsecute(BackgroundTask.java:16)在android.os.AsyncTask.access$300(AsyncTask.java:127)android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:429)android.os.Handler.dispatchMessage(Handler.java:99)android.os.Looper.loop(Looper.java:130)android.app.ActivityThread.main(ActivityThread.java:3687)java.lang.reflect.Method.Invokenactive(本机方法)java:507)在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)在dalvik.system.NativeStart.main(本机方法)

long rowID=db.insert(“mytable”,null,cv);//MainActivity.java:347

有什么问题吗?

共有2个答案

阎裕
2023-03-14

尝试不关闭数据库删除这一行:

dbHelper.close();

正如本文所说,您不必关闭SQLite中的数据库。事实上,我认为你不应该关闭。

以下是另一个可能有帮助的参考:Android上SQLite的最佳实践是什么?

诸葛砚文
2023-03-14

我认为您在使用数据库之前没有打开该数据库,或者您正在尝试再次打开已关闭的数据库,而没有打开数据库

 类似资料:
  • 问题内容: 我正在寻找最快和正确的方法来检查数据库中是否存在记录: 您有任何问题吗? 问题答案: 考虑那是你的课 我将您的参数保留为a,但我认为应该将其作为。 它比因为不需要在select子句中从表中检索所有值而更快。 您可以将字符串放入静态最终常量中,以使其更快。

  • 问题内容: 我已经开始在一个拥有数以百计的表和视图的数据库的地方工作,所有这些表和视图都具有隐秘的名称,只有很少的元音,并且没有文档。它们也不允许对数据库架构进行无谓的更改,我也不能触摸任何数据库,除非要在我自己的计算机上进行测试(该数据库会被删除并定期重新创建),因此我无法添加对任何人都有用的注释。 我尝试使用“ Toad”创建一个ER图,但是连续运行48小时后,它仍然看不到任何可见的东西,我需

  • 问题内容: 我正在寻找一种让python记录器模块登录数据库并在数据库关闭时回退到文件系统的方法。 所以基本上有两件事:如何让记录器记录到数据库,以及当数据库关闭时如何使记录器记录到文件中。 问题答案: 给自己编写一个将日志定向到相关数据库的 处理程序 。当它失败时,您可以将其从记录器的处理程序列表中删除。有许多方法可以处理故障模式。

  • 注意:用户界面已经在 Dreamweaver CC 和更高版本中做了简化。因此,您可能在 Dreamweaver CC 和更高版本中找不到本文中描述的一些选项。有关详细信息,请参阅此文章。 关于数据库记录 显示数据库记录涉及检索储存在数据库或其它内容源中的信息,以及将这些信息呈现到网页上。Dreamweaver 提供了许多显示动态内容的方法,并提供了若干内置的服务器行为,使您可以增强动态内容的表现

  • 问题内容: MySQL数据库表的记录上限是多少?我想知道自动增量字段。如果我添加数百万条记录会怎样?如何处理这种情况?谢谢! 问题答案: mysql int类型可以做很多行:http : //dev.mysql.com/doc/refman/5.0/en/numeric- types.html 无符号的最大值是 无符号的最大值是

  • 问题内容: 我正在尝试根据特定的ID查询数据库。 如果这是第一次运行该活动,则该表将与id列一起存在,但是将不存在具有特定id的记录。如何检查该特定记录是否存在,如果不存在,则添加它?我发现有关检查特定列是否存在的很多信息,但与检查特定记录是否存在无关。 到目前为止,我已经尝试获取id列索引并检查它是否返回-1,但是由于某种原因,它实际上正在返回1。我可以在if语句中使用什么来验证尚未创建id列?