标签: android-sqlite

我什么时候应该关闭DatabaseHelper?

参考此链接,如果您只有一个连接,何时是关闭连接的好时机?我总是在后台运行服务.什么时候打电话给这个close()功能好?有什么建议?

android android-sqlite

3
推荐指数
1
解决办法
1232
查看次数

Android自定义日历和提醒

我的应用程序将包含自定义日历,根据此日历,用户可以创建事件和提醒.

事实是,是否可以在Android中创建自定义日历?

(我的意思是我想在我的日历中创建活动,这些活动不会出现在Android的主日历中.最好用户也可以将这些活动添加到Android的日历中.)

所以我的第一个问题是,是否有可能创建这种应用程序?

2-)我是否需要为此项目使用SQL lite?或Android存储这些信息?因为我想让用户能够编辑和删除事件和提醒.

任何教程或开源项目都会有所帮助.

android android-calendar android-sqlite

3
推荐指数
1
解决办法
2万
查看次数

即使在实现close()之后,也从未在数据库上显式调用Close()

即使我已经实现了上述方法close(),Eclipse也向我显示了上述错误.

这是代码:

public void update_project(View view) {

    EditText cinone = (EditText) findViewById(R.id.pname);
    pname = cinone.getText().toString();

    String fDate = pday + ". " + pmonth + ". " + pyear;

    projectdatabase dbupdate = new projectdatabase(UpdateProject.this);

    dbupdate.open();
    dbupdate.updateProject(id, pname, fDate); 
    dbupdate.close();

}
Run Code Online (Sandbox Code Playgroud)

logcat的:

12-31 22:05:51.114: E/SQLiteDatabase(4180): close() was never explicitly called on  
database '/data/data/com.kk.project/databases/project_db' 
12-31 22:05:51.114: E/SQLiteDatabase(4180):  
android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the     
cursor or database object that was opened here
12-31 22:05:51.114: E/SQLiteDatabase(4180):     at  
android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1943)
12-31 22:05:51.114: E/SQLiteDatabase(4180):     at 
android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:1007)
12-31 …
Run Code Online (Sandbox Code Playgroud)

android android-sqlite

3
推荐指数
1
解决办法
2064
查看次数

从SQLite数据库在ListView中显示100000多个项目

我正在尝试使用游标在ListView中显示预填充数据库(超过100000行)中的所有项目.它可以工作,但应用程序启动并显示ListView需要几分钟的时间.有更快的方法吗?我读过有关FTS3表的内容,会有帮助吗?

我正在使用ArrayList<HashMap<String, String>>SimpleAdapter和自定义2行布局.码:

Cursor cursor = sDictionary.query("FTSgesla", new String[] {PodatkovnaBaza.KEY_WORD, PodatkovnaBaza.KEY_DEFINITION}, null, null, null, null, PodatkovnaBaza.KEY_WORD);

    if (cursor == null) 
    {

            // There are no results
            mTextView.setText("Empty");
    } 
    else 
    {

        HashMap<String, String> item;

        if(cursor.moveToFirst())
        {
            do
            {
                item = new HashMap<String, String>();
                item.put("line1", cursor.getString(0));
                item.put("line2", cursor.getString(1));
                list.add(item);
            }
            while(cursor.moveToNext());
        }

            sa = new SimpleAdapter(GlavniActivity.this, list,
                    R.layout.result,
                    new String[] { "line1","line2" },
                    new int[] {R.id.word, R.id.definition});

            mListView.setAdapter(sa);
            // Define the on-click listener for the list items
            mListView.setOnItemClickListener(new OnItemClickListener() { …
Run Code Online (Sandbox Code Playgroud)

android android-listview android-sqlite

3
推荐指数
1
解决办法
1697
查看次数

带UPDATE的execSQL()不会更新

我试图使用rawQuery和execSQL用于操纵方法,而不是我的数据库,.update,.insert,等我想用下面的代码进行更新:

db.execSQL("UPDATE configuration " +
                "SET number_fields = " + number_fields + ", "
                + "frequency = " + frequency + ", "
                + "ag = " + ag + ", "
                + "number_alarms = " + number_alarms + ", "
                + "failed_rapper = " + failed_rapper + ", "
                + "max_mv = " + max_mv + ", "
                + "max_nav = " + max_nav + " "
                + "WHERE serial_id = …
Run Code Online (Sandbox Code Playgroud)

sqlite android sql-update android-sqlite

3
推荐指数
1
解决办法
9130
查看次数

Android SQLite通配符

我正在尝试使用通配符元素来搜索我的SQLite表,以查找在特定变量中任何位置具有元素的条目.

public String[] getCheckoutEntry(String title, String ISBN)
{
//Wild card Syntax
String titleWildCard = "%" + title + "%";
String ISBNWildCard = "%" + ISBN + "%";
//Query
String query = "select USER,AUTHOR,DATE,CALL_NUMBER,COUNT from CHECKOUT where TITLE = ? or ISBN = ? ";
String[] selectionArgs = new String[] {titleWildCard, ISBNWildCard};
Cursor cursor = db.rawQuery(query, selectionArgs);
Run Code Online (Sandbox Code Playgroud)

我已经在Stack Overflow上检查了六个答案,并且每个人都建议只在我的变量上附加一个"%",如上所示.当我尝试上面的代码时,我的程序只是解释了titleWildCard,包括%作为搜索查询,并尝试在表中找到%.

如果我取出"%",那么程序运行没有问题,只是它只搜索确切的术语.

sqlite android android-sqlite

3
推荐指数
1
解决办法
1423
查看次数

Android - 预填充数据库,插入或预加载?

我正在构建一个应用程序,该应用程序目前在其中一个表中有11列和120行文本数据.它可能是为用户预先填充的唯一表,但是,我试图弄清楚填充数据的最佳方法是什么.我看到了一些不同的选择.

  1. 在oncreate数据库期间运行insert语句
  2. 在assets文件夹中创建一个已有数据的表,并在创建应用程序时将其复制.

对于这样的事情,最佳做法是什么?随着时间的推移,数据库将更新几行.我看一个月可能有几行,没什么太大的.

任何帮助将不胜感激.

java android android-sqlite

3
推荐指数
1
解决办法
971
查看次数

在Android中删除整个数据库onUpgrade吗?

如果尝试调用onUpgrade,我将尝试完全删除数据库。根据这个SO问题:如何以编程方式从Android删除SQLite数据库,我只能调用context.deleteDatabase(String dbName),但无法在onUpgrade方法中访问上下文。在onUpgrade中,传入了一个db对象,我看到您可以使用一个db.deleteDatabase()方法,但是它需要一个文件。我没有数据库文件。有什么办法db.deleteSelf或类似的方法吗?我知道我可以删除表等而不是完全删除数据库,但是我的数据库结构已经完全更改,我宁愿先调用deleteDb();然后onCreate(db);再调用。

database sqlite android android-sqlite

3
推荐指数
1
解决办法
2145
查看次数

如何以编程方式删除Android Sqlite数据库

我试图在我的应用程序中提供一个选项,供用户擦除所有数据并重新开始.我已经尝试过一些东西,但似乎没有一个在数据仍然存在的意义上工作.这是我的第一次尝试:

public void clearDatabase(Context context) {
        DatabaseHelper helper = new DatabaseHelper(context);
        SQLiteDatabase database = helper.getWritableDatabase();
        database.delete(Constants.TRANSACTION_TABLE, null, null); //erases everything in the table.
        database.delete(Constants.CUSTOMER_TABLE, null, null);
        database.delete(Constants.RETAILER_TABLE, null, null);

        database.close();
    }
Run Code Online (Sandbox Code Playgroud)

这似乎工作,但然后应用程序将重新启动时崩溃.

然后我在SQliteOpenHelper子类中尝试这个

  public void resetDatabase() {
    SQLiteDatabase database = getWritableDatabase();
    database.execSQL("DROP TABLE IF EXISTS customer_table");
    database.execSQL("DROP TABLE IF EXISTS transaction_table");
    database.execSQL("DROP TABLE IF EXISTS retailer_table");
    database.execSQL(CREATE_CUSTOMER_TABLE);
    database.execSQL(CREATE_TRANSACTION_TABLE);
    database.execSQL(CREATE_RETAILER_TABLE);
    database.close();
}
Run Code Online (Sandbox Code Playgroud)

这不会在重新启动时崩溃,但数据仍然存在.唯一有效的是我以编程方式更改版本号.但是当我从IDE运行应用程序时,它将具有较旧的版本号,并且应用程序将无法启动,因为设备上的版本号高于代码中的版本号.

我还能尝试什么?

android android-sqlite

3
推荐指数
1
解决办法
4172
查看次数

查询具有多个条件的2个列的表

我有一个包含以下结构和示例数据的表:

在此输入图像描述

现在我想查询value等于#和的记录@.
例如根据上面的图像,它应该返回1和2

id
-----
1 
2    
Run Code Online (Sandbox Code Playgroud)

此外,如果该参数是@,#和$它应该给我们1.因为只有id的记录1具有所有给定的值.

id
-----
1 
Run Code Online (Sandbox Code Playgroud)

sql sqlite performance android-sqlite

3
推荐指数
1
解决办法
64
查看次数