Mac OS-X
Android的
Eclipse与ADT
SQLite的
我是创建Android应用程序的新手,我对此进行了大量研究,但我无处可去.我需要查询我的SQLite数据库以返回2个日期之间的所有行.到目前为止,我从我的研究中学到的是Androids SQLite数据库中没有DateTime列,我必须将其保存为文本列.但我认为问题在于尝试比较字符串,但我无法找到解决方法.这是我的代码:
DB = currentContext.openOrCreateDatabase(DBName, 0, null);
DB.execSQL("CREATE TABLE IF NOT EXISTS " + tableName + " (ID INTEGER PRIMARY KEY AUTOINCREMENT, Date VARCHAR(40), Hours INT(3));");
Run Code Online (Sandbox Code Playgroud)
我没有收到任何错误,但我没有从RawQuery返回任何结果.这是我的代码:
Cursor c = newDB.rawQuery("select ID, Date, Hours from " + tableName + " where Date BETWEEN '" + date1 + " 00:00:00' AND '" + date2 + " 99:99:99'", null);
if (c != null ) {
Log.d(TAG, "date1: "+date1);
Log.d(TAG, "date2: "+date2);
if (c.moveToFirst()) {
do {
int …Run Code Online (Sandbox Code Playgroud) 我有我的Android应用程序,其中我使用SQLite数据库.一切都很好.但我想下载.db文件来检查我的数据库架构和数据库中的数据.但我不知道如何从Android设备复制SQLite .db文件.即时通讯使用Google Nexus 7进行开发.请提前帮助我,谢谢
我在向Android SQLite数据库中插入多个条目时遇到问题.我这样插入db.execQuery():
String insertString = "INSERT INTO coordinates
SELECT 0 AS _id, 5 AS associated_route_id, 38.88945 AS latidude, -77.034821 AS longitude
UNION SELECT 1, 5, 38.889671, -77.034912
UNION SELECT 2, 5, 38.890041, -77.035316"
database.execSQL(insertString);
Run Code Online (Sandbox Code Playgroud)
我稍后用同样的数据库拉,如下:
String[] columns = new String[] { "latitude", "longitude" };
Cursor cursor = db.query("coordinates", columns,
"associated_route_id=5", null, null, null,
null);
cursor.moveToFirst();
if (cursor.getCount() == 0)
// No rows in cursor
Run Code Online (Sandbox Code Playgroud)
我使用db.insert(table,null,contentValues)使用它,但替换了插入以使事情更快.
问题是光标是空的,这使得它看起来像插入不起作用.为什么不起作用?
我正在ava.lang.NoClassDefFoundError: net/sqlcipher/CursorWindow尝试使用sqlicipher和proguard运行我的应用程序.该项目完美无需启用proguard.我第一次使用sqlcipher创建一个新的db我得到上面的错误.我看过另一个看似相同的问题,但我已经尝试了这个问题的答案,我仍然得到了错误.
Android Proguard SqlCipher NoClassDefFoundError
这是我的全部内容proguard-properties:
-libraryjars libs/commons-codec.jar
-libraryjars libs/guava-r09.jar
-libraryjars libs/httpmime-4.1.2.jar
-libraryjars libs/jsr305-2.0.2.jar
-libraryjars libs/libphonenumber-5.7.jar
-libraryjars libs/sqlcipher.jar
-keep class com.myandroidapp.** { *; }
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers
-dontpreverify
-dontobfuscate
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*,!code/allocation/variable
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-dontwarn javax.annotation.**
-dontwarn android.app.**
-dontwarn android.support.**
-dontwarn android.view.**
-dontwarn android.widget.**
-dontwarn com.google.common.primitives.**
-dontwarn **CompatHoneycomb
-dontwarn **CompatHoneycombMR2
-dontwarn **CompatCreatorHoneycombMR2
-keepclasseswithmembernames class * {
native <methods>;
}
-keepclasseswithmembers class * { …Run Code Online (Sandbox Code Playgroud) SQLiteOpenHelper和之间的区别是什么SQLiteAssetHelper?我如何使用它们?
我知道你使用SQLiteOpenHelper时必须覆盖onCreate()和onUpgrade()方法.此外,可以添加,删除和查找数据库值.
但是,我读到这SQLiteAssetHelper对于我的情况更好 - 因为我将有一个预先填充的数据库,我会做更多的查询,而不是添加或删除或其他任何东西.
所以基本上:
这两者之间的根本区别是什么?
对数据库中的数据进行查询哪个更好,这在编译时是未知的,而是在运行时?(我将使用query()或SQLiteQueryBuilder()为此.)
我该如何设置正确的?
对于我的应用程序,我需要将一个简单的SparseBooleanArray保存到内存中,然后再读取。有什么方法可以使用SharedPreferences保存它吗?
我考虑过使用SQLite数据库,但是对于像这样简单的事情来说似乎过于矫kill过正。我在StackOverflow上发现的其他一些答案建议使用GSON将其另存为字符串,但我需要使该应用程序保持非常轻便且文件大小快速。有什么方法可以在不依赖第三方库的情况下保持良好性能的同时实现这一目标?
performance android sparse-array sharedpreferences android-sqlite
如何通过Android SQLite数据库中的ID列表删除多行?
我以这种方式定义了一个通用的delete方法:
protected void deleteWhere(String whereClause, String[] whereArgs) {
try {
databaseHelper.getWritableDatabase().delete(
getTableName(), whereClause, whereArgs);
} finally {
databaseHelper.close();
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我尝试使用ID列表进行调用:
public void deleteAll(Iterable<T> entities) {
Iterable<Long> ids = Iterables.transform(entities, getId);
String whereClause = getIdColumn() + " IN (?)";
String[] whereArgs = { TextUtils.join(",", ids) };
deleteWhere(whereClause, whereArgs);
}
Run Code Online (Sandbox Code Playgroud)
例如,如果ID列表包含值[1、2、42],那么我认为生成的SQL应该是:
DELETE FROM tableName WHERE _id IN (1,2,42);
Run Code Online (Sandbox Code Playgroud)
但这似乎无法正常工作。如果该列表仅包含1个ID,则将其正确删除。但是,如果我提供多个值,则零行会受到影响。我究竟做错了什么?
在我的应用程序中,我必须使用REST API在应用程序中的服务器和SQLite DB之间同步数据。
我有一项类似待办事项的活动,在该活动中,服务器上的所有待办事项将通过推送至应用程序的通知进行通知。现在,让我们检查senario。
服务器上有3个待办事项
-注1-
注2-
注3
该服务器上有三个待办事项,所有这些都已同步并存储在应用程序的SQLite中。当用户打开应用程序时,通过使用存储在SharedPrefs中的时间戳请求新的注释,只有新的注释在应用程序中同步。但是,如果-Note 2在服务器(MySql DB)上的更改比
-如何在应用程序中以最少N / W调用同步更新或删除的注释呢?
-我们是否可以(静默)触发推送通知以通知应用程序服务器上的数据已更改,因此可以在应用程序下次启动时进行同步。
我正在搜索此问题,但是找不到合适的解决方案。
我正在尝试实现新的android体系结构组件并在片段和视图模型中使用实时数据,但是当我向实时数据添加观察者时,应用程序崩溃抛出此异常.
Process: com.nrs.nsnik.architecturecomponents, PID: 3071
java.lang.RuntimeException: Unable to start activity
ComponentInfo{com.nrs.nsnik.architecturecomponents/com.nrs.nsnik.architecturec
omponents.view.MainActivity}: java.lang.ClassCastException: android.arch.lifecycle.LiveData_LifecycleBoundObserver_LifecycleAdapter cannot be cast to android.arch.lifecycle.GeneratedAdapter
.
.
.
.
Caused by: java.lang.ClassCastException: android.arch.lifecycle.LiveData_LifecycleBoundObserver_LifecycleAdapter cannot be cast to android.arch.lifecycle.GeneratedAdapter
Run Code Online (Sandbox Code Playgroud)
列表片段:
public class ListFragment extends Fragment {
@BindView(R.id.listFragmentRecyclerView)
RecyclerView mRecyclerView;
@BindView(R.id.listFragmentAddItem)
FloatingActionButton mFloatingActionButton;
private Unbinder mUnbinder;
private CompositeDisposable mCompositeDisposable;
private ListViewModel mListViewModel;
private List<NoteEntity> mNoteEntityList;
private ListAdapter mListAdapter;
private NoteDatabase mNoteDatabase;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_list, container, false);
mUnbinder …Run Code Online (Sandbox Code Playgroud) android android-sqlite android-livedata android-viewmodel android-architecture-components
从服务器收到的Json拥有此表格。
[
{
"id": 1103333,
"name": "James",
"tagA": [
"apple",
"orange",
"grape"
],
"tagB": [
"red",
"green",
"blue"
],
"tagC": null
},
{
"id": 1103336,
"name": "John",
"tagA": [
"apple",
"pinapple",
"melon"
],
"tagB": [
"black",
"white",
"blue"
],
"tagC": [
"London",
"New York"
]
}
]
Run Code Online (Sandbox Code Playgroud)
一个对象可以具有多个标签,并且一个标签可以与多个对象相关联。
在此列表中,我想找到一个对象,其tagA是苹果或葡萄,而tagB是黑色。
这是我以前写的第一张表。
create table response(id integer primary key, name text not null, tagA text,
tagB text, tagC text)
select * from response where (tagA like '%apple%' or tagA like '%grape%') and (tagB …Run Code Online (Sandbox Code Playgroud) android-sqlite ×10
android ×9
sqlite ×5
java ×2
android-architecture-components ×1
date ×1
obfuscation ×1
performance ×1
proguard ×1
sparse-array ×1
sqlcipher ×1