Articles of android sqlite

如何在Android上的Play商店上传我的应用程序的新版本之前测试升级sqlite数据库

我发现在更新应用版本后,我上传的应用程序中没有find“table_name”这样的表。 我在测试后出来我只是在将旧版本的应用程序升级到新版本的应用程序之后才遇到此问题 我所实施的内容 我已经在onUpgrade()方法中完成了代码,并且还在构造函数中升级了db版本,但我无法在设备中对其进行测试。 步骤1)将版本代码1增加到2 public databasehelper(Context context) { super(context, DATABASE_NAME, null, 2); this.myContext = context; try { createDataBase(); openDataBase(); } catch (IOException e) { e.printStackTrace(); } } 步骤2)将新表添加到onUpgrade()方法中 @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { Log.e(“onUpgrade db”, “>>>>called”); switch (oldVersion) { case 1: db.execSQL(DATABASE_CREATE_notification_counter); Log.e(“db version”, “>>>”+oldVersion); // we want both […]

如何提高Android的SQLite数据库的性能

有关stackoverflow的这个主题的问题很少,但我没有得到正确的答案。 我对平面文件的性能有一些疑问,使用平面文件而不是SQLite更好吗? 我获取了Android SQLite性能统计信息。 我有一个表有21列的性能统计信息 任何人都可以建议如何减少插入时间。 Records Write time in ms Read time in ms 1000 67813 608 1000 66340 604 1000 64359 609 10000 679837 5159 10000 618062 5110 10000 644638 5729 10000 646878 5890 Flat file比SQLite有更少的时间 所以有人请建议我如何为SQLite改善这段时间。 我database open insert using ContentValues和数据库关闭使用简单的database open insert using ContentValues 。 请告诉我一些如何改进这些统计数据的方法。 使用下面的答案后更新了性能统计数据。我想提高这些性能。 Records Writetime in ms […]

通过ContentValues将时间戳插入数据库

在Android中,是否可以使用ContentValues将时间戳插入数据库? 当我尝试使用以下内容添加它时: ContentValues args = new ContentValues(); args.put(MY_DATE, my_date); 我收到一个错误,告诉我my_date需要是一个String 。 有关如何实现这一目标的任何建议?

ActiveAndroid Update()查询

我正在尝试使用ActiveAndroid对列进行批量更新。 这是我的代码: new Update(SomeModel.class).set(“Enabled = 0”).execute(); 但是我得到了一个StackOverflowError 。 (编辑:我的不好,错误在其他地方)。 有谁知道如何执行Update()查询? 它在ActiveAndroid的wiki中没有说什么。 编辑: 这个语法是正确的: new Update(SomeModel.class) .set(“Enabled = 0”) .where(“Account = ?”, account.getId()) .execute(); 如果不需要,您可以跳过。

Android SQLite查询列不为空且不为空

我无法弄清楚.query调用的语法。 我需要选择与某个列匹配的所有记录,这些列对于第二个(不同的)列没有空值或空值 我最好的尝试: Cursor cursor = mDatabase.query(DatabaseOpenHelper.TABLE_ROOMS, mAllColumns, DatabaseOpenHelper.KEY_ROOM_HOSPITAL_ID + ” =? AND ” + DatabaseOpenHelper.KEY_ISO + ” IS NOT NULL OR NOT ?”, new String[]{String.valueOf(hospitalId), “”}, null, null, null); 这将返回所有记录。 如果我使用AND代替OR,它返回与hospitalId匹配的记录,但忽略NOT NULL或NOT“”部分。 有小费吗? 我应该使用rawQuery调用吗? 谢谢。

如何修复android内容提供程序中找不到的内容提供程序URL?

我按照下面的教程http://www.vogella.de/articles/AndroidSQLite/article.htm 但是点击“确认”按钮后得到这个例外 01-20 10:18:14.585: E/AndroidRuntime(2006): Caused by: java.lang.IllegalArgumentException: Unknown URL content://com.example.todos.contentprovider/todos 01-20 10:18:14.585: E/AndroidRuntime(2006): at android.content.ContentResolver.insert(ContentResolver.java:910) 01-20 10:18:14.585: E/AndroidRuntime(2006): at com.example.todos.TodoDetailActivity.saveState(TodoDetailActivity.java:122) 01-20 10:18:14.585: E/AndroidRuntime(2006): at com.example.todos.TodoDetailActivity.onPause(TodoDetailActivity.java:100) TodoDetailActivity public class TodoDetailActivity extends Activity { private Spinner mCategory; private EditText mTitleText; private EditText mBodyText; private Uri todoUri; @Override protected void onCreate(Bundle bundle) { super.onCreate(bundle); setContentView(R.layout.todo_edit); mCategory = […]

Android Sqlite性能

我一直在做一些实验来测量android上的sqlite性能。 我对结果感到失望。 我所做的是向表中插入10.000个查询,并且需要130-140秒, 但这些条件 ; 1.三星galaxy s3处于省电模式 2.插入的数据(或类)有3个字符串和一个浮点数(对于sqlite是真的) 3.插入事件正在asynctask中完成。 4.在asynctask中,我显示了一个进度对话框,其中包含传递的计时器文本(System.currentTimeMillis – seconds etc blala) class AddStudentsTask extends AsyncTask { ProgressDialog prgDialog; int max = 10000; Student s; long seconds = System.currentTimeMillis(); @Override protected void onPreExecute() { super.onPreExecute(); prgDialog = new ProgressDialog(MainActivity.this); prgDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); prgDialog.setMessage(seconds+””); prgDialog.setMax(max); prgDialog.setCancelable(false); prgDialog.show(); } @Override protected void onProgressUpdate(Integer… values) { super.onProgressUpdate(); prgDialog.setProgress(values[0]); […]

SQLiteReadOnlyDatabaseException:尝试编写只读数据库(代码1032)

所以在一些罕见的情况下,我看到“尝试编写只读数据库”的消息,我无法弄清问题所在。 我将从我的logcat中的堆栈跟踪开始…正如您从时间戳中看到的那样,我在尝试写入之前仅检查了db.isReadOnly()1ms。 (isOpen = true,readOnly = false) 01-29 13:47:49.115: D/AWT(11055): #479.Got writable database (230537815): isOpen: (true) isReadOnly: (false) inTransaction: (false) 01-29 13:47:49.116: D/AWT(11055): #479.in transaction: Got writable database (230537815): isOpen: (true) isReadOnly: (false) inTransaction: (true) 01-29 13:47:49.116: E/SQLiteLog(11055): (1032) statement aborts at 15: [INSERT INTO Events(col1,col2,col3,col4) VALUES (?,?,?,?)] 01-29 13:47:49.117: E/SQLiteDatabase(11055): Error inserting data=”scrubbed” 01-29 […]

GreenDAO支持表之间的多种关系

我一直在尝试使用GreenDAO创建数据库模型。 当我尝试在不同的表之间创建多个关系时,问题就出现了。 基本上,我有一个Message表,一个Conversation表和一个User表。 用户有一个消息列表,并且消息具有父对话。 我尝试编写此代码来创建数据库: private static void addUser(Schema schema) { user = schema.addEntity(“User”); userId = user.addIdProperty().getProperty(); user.addStringProperty(“facebookId”).unique().index(); user.addStringProperty(“firstName”); user.addStringProperty(“lastName”); user.addStringProperty(“fullName”); user.addStringProperty(“photoUrl”); } private static void addMessage(Schema schema) { message = schema.addEntity(“Message”); messageId = message.addIdProperty().getProperty(); message.addStringProperty(“messageId”).primaryKey(); message.addDateProperty(“date”); message.addStringProperty(“content”); message.addStringProperty(“typeString”); } private static void addConversation(Schema schema) { conversation = schema.addEntity(“Conversation”); conversation.addIdProperty(); conversation.addStringProperty(“conversationId”); // REST OF THE […]

在现有数据库内容上使用ActiveAndroid

我开发了一个Android-App,我使用SQLiteOpenHelper将数据保存在SQLite数据库中。 我想知道我是否可以使用ActiveAndroid更新我的应用程序,但是以某种方式保存以前存储在数据库中的用户数据。 那可能吗?