这段代码:
public void foo() {
new Thread() {
@Override
public void run() {
ShaufelDatabaseHelper dbHelper = ShaufelDatabaseHelper.getInstance(parentActivity);
SQLiteDatabase connection = null;
Cursor queryData = null;
final String[] values = new String[8];
try{
connection = dbHelper.getReadableDatabase();
queryData = connection.rawQuery( // line 132
"SELECT name, firstname, section, row, gravenr, type, workorder, comment "+
"FROM orders, graves "+
"WHERE orders.id=? AND graves.id=orders.id"
, new String[] {orderID});
queryData.moveToFirst(); // line 138
// ...
} catch(Throwable t) {
// ...
}
}.start();
}
Run Code Online (Sandbox Code Playgroud)
给我这些例外:
10-29 …Run Code Online (Sandbox Code Playgroud) 我有一个名为"priority"的(int)列.当我选择我的项目时,我希望最高优先级(最低编号)是第一个,最低优先级(最高编号)是最后一个.
但是,没有优先级的项目(当前优先级为0)应该在具有优先级的列之后由其他列列出.
换一种说法.如果我有这些优先事项:
1 2 0 0 5 0 8 9
Run Code Online (Sandbox Code Playgroud)
我该如何对它们进行排序:
1 2 5 8 9 0 0 0
Run Code Online (Sandbox Code Playgroud)
我想我可以使用Int.max而不是0,但是0组成了一个很好的默认值,我会尽量保留.
我Sqlite在app中创建了数据库.当从我清楚数据settings->applications->manage applications的Sqlite删除分贝.保持sqlite数据库原样的任何建议.
我正在尝试从数据库中选择一些数据,我有两片代码来做:
cursor = builder.query(db,
new String[]{"col1", "col2", "col3"},
"id = ?", new String[]{getSID(db)}, null, null, null);
Run Code Online (Sandbox Code Playgroud)
和
cursor = builder.query(db,
new String[]{"col1", "col2", "col3"},
"id = " + getSID(db), null, null, null, null);
Run Code Online (Sandbox Code Playgroud)
它们之间的区别在于,根据文档,第一个似乎更正确,但它也不起作用 - 光标是空的.而不是第二个 - 我得到了我需要的所有数据.
所以我尝试在我的电脑上使用数据库副本执行不同的SQL查询,这就是我所拥有的:
SELECT col1, col2, col3 FROM SomeTables WHERE (id = '42')
Run Code Online (Sandbox Code Playgroud)
这个不起作用(这个查询显然等于查询,由第一个代码示例生成)
SELECT col1, col2, col3 FROM SomeTables WHERE (id = 42)
Run Code Online (Sandbox Code Playgroud)
这个工作正常(等于从第二个代码示例查询).
据我所知,SQLite应该自动执行类型转换,但出了点问题,我不知道为什么.您对如何修复第一个代码示例有什么想法吗?(或者,也许,数据库?)
如果重要的话,这里是CREATE带有id字段的表的简化脚本:
CREATE TABLE SomeTable ( ID PRIMARY KEY, col1, col2, [...] )
Run Code Online (Sandbox Code Playgroud)
UPD:顺便说一下,getSID(db)返回String …
如果我忘了它,它有时会起作用;.但有时却没有.
在JDBC和Android SQLite中,似乎我根本不需要;.我很迷惑.
我什么时候应该使用分号?
我正在阅读这篇文章(http://www.vogella.com/tutorials/AndroidSQLite/article.html),以了解Android应用程序中的SQLite数据库.
在文章中他有一个提示:
最好为每个表创建一个单独的类.此类定义静态onCreate()和onUpgrade()方法.这些方法在SQLiteOpenHelper的相应方法中调用.这样,即使您有多个表,SQLiteOpenHelper的实现仍然可读.
如果我正确理解了这个提示,我应该为我的数据库中的每个表都有一个类?
这真的是最好的做法吗?
如果是这样,那么使用多个表的复杂查询呢?如果创建在不同的类中,我该如何管理?
如何正确保存数据库版本?对于每个表的更改,我会更改数据库版本号吗?
谢谢
这非常类似于另一个被关闭的问题,而不是一个真正的问题.我试图编辑它以使其有效重新开放,但被告知我最好不要问一个新问题.
我正在开发android并需要在sqlite数据库中存储datetime值来跟踪将生成通知的重复事件.我还需要能够根据时间范围查询数据库.
在SQLite的文档指出它不支持特定的日期类型但日期可以使用文本,REAL,或整型表示:
TEXT为ISO8601字符串("YYYY-MM-DD HH:MM:SS.SSS").
真实如朱利安日数,根据公历4714年11月24日格林威治中午以来的天数.
INTEGER as Unix Time,自1970-01-01 00:00:00 UTC以来的秒数.
最初的优点似乎是:
这听起来不错吗?使用INTEGER作为日期时间会使查询时间范围明显快于使用TEXT时的速度吗?还有什么我还没考虑过吗?
鉴于我的用例,哪些解决方案最好?
我正在构建一个简单的Android RPG.每位玩家最多可以获得约50名士兵.每个士兵都有一些统计数据(等级,hp,攻击等)和三个库存槽.游戏中只有大约100个项目可以填充这些库存位置.我希望建立一个关系数据库,它有一个士兵表,一个拥有物品的表,以及一些其他各种表.
速度是我的主要关注点.SQLite是明显的首选.但是,它看起来非常笨重,并且面向具有1000行的数据库.小型数据库有更好的选择吗?我不需要复杂的查询或任何东西,只是一种存储数据并将其备份到服务器的方法.
如何在片段内实现android SQLite,而不是将其扩展到片段以外的任何其他片段,同时将这些条目放在可扩展listview的子元素中.
这就是我所实现的:http://wptrafficanalyzer.in/blog/implementing-horizontal-view-swiping-using-viewpager-and-fragmentpageradapter-in-android/
我正在我的主要活动中实现视图寻呼机,因此我必须在其中做我必须做的事情.我不知道如何使用SQLite与片段和自定义Expandablelist适配器请帮助我.
在这里,我基本上将用户名和年龄作为用户条目,我希望在expandablelistview的子项中显示.
因此,日期表的问题无法打开参与活动,即活动2
更新:: SQLiteAdapter:
public class SQLiteDBAdapter {
private static final String TAG = "DBAdapter"; //used for logging database version changes
// DataBase info:
public static final String DATABASE_NAME = "entry";
public static final String DATABASE_TABLE2 = "entryTable";
public static final String DATABASE_TABLE1= "dateTable";
public static final int DATABASE_VERSION = 7; // The version number must be incremented each time a change to DB structure occurs.
//Field Names(date table):
public static final String …Run Code Online (Sandbox Code Playgroud) 我有一个二维ArrayList类型String,它是适配器类的输入RecyclerView.每次onResume()调用时,列表中的数据都来自SQLite数据库.我已经实现了拖放功能和一个onMove()成功交换列表元素的功能.但是,我需要在onResume()调用之前存储修改后的列表,这将重写列表并用旧位置填充它.我的猜测是在onStop()事件中实现重写功能.这是我的主要活动:
RecyclerView recyclerView;
RecyclerViewAdapter adapter;
RecyclerView.LayoutManager layoutManager;
ArrayList<ArrayList<String>> data;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
assert fab != null;
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(MainActivity.this, ViewDbActivity.class);
startActivity(i);
}
});
recyclerView = (RecyclerView) findViewById(R.id.myRecyclerView);
layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
RecyclerView.ItemAnimator itemAnimator = new DefaultItemAnimator();
ItemTouchHelper item …Run Code Online (Sandbox Code Playgroud)