参考此链接,如果您只有一个连接,何时是关闭连接的好时机?我总是在后台运行服务.什么时候打电话给这个close()功能好?有什么建议?
我的应用程序将包含自定义日历,根据此日历,用户可以创建事件和提醒.
事实是,是否可以在Android中创建自定义日历?
(我的意思是我想在我的日历中创建活动,这些活动不会出现在Android的主日历中.最好用户也可以将这些活动添加到Android的日历中.)
所以我的第一个问题是,是否有可能创建这种应用程序?
2-)我是否需要为此项目使用SQL lite?或Android存储这些信息?因为我想让用户能够编辑和删除事件和提醒.
任何教程或开源项目都会有所帮助.
即使我已经实现了上述方法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) 我正在尝试使用游标在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) 我试图使用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表,以查找在特定变量中任何位置具有元素的条目.
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,包括%作为搜索查询,并尝试在表中找到%.
如果我取出"%",那么程序运行没有问题,只是它只搜索确切的术语.
我正在构建一个应用程序,该应用程序目前在其中一个表中有11列和120行文本数据.它可能是为用户预先填充的唯一表,但是,我试图弄清楚填充数据的最佳方法是什么.我看到了一些不同的选择.
对于这样的事情,最佳做法是什么?随着时间的推移,数据库将更新几行.我看一个月可能有几行,没什么太大的.
任何帮助将不胜感激.
如果尝试调用onUpgrade,我将尝试完全删除数据库。根据这个SO问题:如何以编程方式从Android删除SQLite数据库,我只能调用context.deleteDatabase(String dbName),但无法在onUpgrade方法中访问上下文。在onUpgrade中,传入了一个db对象,我看到您可以使用一个db.deleteDatabase()方法,但是它需要一个文件。我没有数据库文件。有什么办法db.deleteSelf或类似的方法吗?我知道我可以删除表等而不是完全删除数据库,但是我的数据库结构已经完全更改,我宁愿先调用deleteDb();然后onCreate(db);再调用。
我试图在我的应用程序中提供一个选项,供用户擦除所有数据并重新开始.我已经尝试过一些东西,但似乎没有一个在数据仍然存在的意义上工作.这是我的第一次尝试:
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运行应用程序时,它将具有较旧的版本号,并且应用程序将无法启动,因为设备上的版本号高于代码中的版本号.
我还能尝试什么?
我有一个包含以下结构和示例数据的表:
现在我想查询value等于#和的记录@.
例如根据上面的图像,它应该返回1和2
id
-----
1
2
Run Code Online (Sandbox Code Playgroud)
此外,如果该参数是@,#和$它应该给我们1.因为只有id的记录1具有所有给定的值.
id
-----
1
Run Code Online (Sandbox Code Playgroud) android-sqlite ×10
android ×9
sqlite ×4
database ×1
java ×1
performance ×1
sql ×1
sql-update ×1