Articles of SQLite

Android的SQLite – select字段为空或空的logging

我的应用程序有一个sqlite数据库,其中一些字段为空或空(这意味着我从来没有插入任何东西到该字段)。 我希望select该字段为空或空的所有logging。 这是我曾经试过的: cursor = db.query(DBHelper.TABLE_NAME, COLUMNS, "folder_name = ? ", new String[] {"null"}, null, null, DBHelper.TIMESTAMP_COL + " DESC"); 但是这没有奏效,我也没有得到任何logging。 我需要做什么才能做到这一点?

如何将JSON对象存储在SQLite数据库中

如何在SQLite数据库中存储JSON对象? 什么是正确的方法? 一个地方是blobtypes的列。 如果我可以将JSON对象转换为字节数组并使用Fileoutputstream 另一个想法是将其作为string存储在文本列中 import org.json.JSONObject; JSONObject jsonObject; public void createJSONObject(Fields fields) { jsonObject = new JSONObject(); try { jsonObject.put("storedValue1", fields.storedValue1); jsonObject.put("storedValue2", fields.storedValue2); jsonObject.put("storedValue3", fields.storedValue3); jsonObject.put("storedValue4", fields.storedValue4); jsonObject.put("storedValue5", fields.storedValue5); jsonObject.put("storedValue6", fields.storedValue6); } catch (JSONException e) { e.printStackTrace(); } }

Android SQLite – SQLiteDatabase.replace()实际上做了什么?

我需要对数据库执行INSERT或UPDATE IF EXISTtypes的过程。 我读过.replace()是要走的路。 它插入新的logging就好了,但如果logging已经存在,它不会更新它。 我有这样的东西: ContentValues values = new ContentValues(); values.put(ID, 1); values.put(NAME, "bob"); values.put(VISIBLE, true); db.replace("peopleTable", null, values); 如果我在这个logging不在数据库中的时候运行这个代码,它似乎创buildlogging就好了,就像我做了一个insert() 。 但是,如果我将NAME改为“john”或类似的东西,并再次运行replace() ,它不会更新logging。 根据文档,这里是语法: public long replace (String table, String nullColumnHack, ContentValues initialValues) 为什么叫做initalValues ? 这是否意味着这些值只有在logging不存在并且将被插入时才使用? 如果是这样,你如何使用该方法来更新logging? 你在哪里指定新的值? 如果我误解了replace()是干什么的,那么有人可以解释它的目的是什么吗?

android java.lang.IllegalStateException:无法从CursorWindow读取第0行,第0列

我正在开发一个应用程序下载一些文件,并将其文件保存在file_content字段数据库。 文件大小可以从一些KB到10 MB不等。 该应用程序适用于所有尺寸的同时保存。 在长file_contentlogging上使用select语句时会发生此问题。 它给 java.lang.IllegalStateException:无法从CursorWindow读取第0行,第0列 当获取这样的行时。 字段内容大小是否有限制? 如果是这样,那么为什么它让我们在检索时保存并给出错误? 这是我的代码片断获取行: public String getFileContent(MyFile gc) { if(!isDBOpen()) { open(); } try { String mQuery = "SELECT * FROM " + DBOpenHelper.TABLE_SAVED_FILES + " WHERE " + DBOpenHelper.COLUMN_ID + " = " + gc.id; Cursor mCursor = database.rawQuery(mQuery, null); if(mCursor.getCount() <= 0) { return null; } […]

Android的SQLite和数据库计划的ORM

我正在寻找一个非常简单的ORM框架在SQLite的Android上工作。 我一直在testingActiveAndroid,但是没有一个例子可以在Eclipse上构build。 顺便说一下,如何在SQLite for Android中实现“多对多”关系? 你如何反映删除行的级联并保证数据库的完整性?

什么时候应该在另一个线程(而不是主线程)上执行某些SQLite操作?

我的Android应用程序包括一个SQLite数据库和一个SQLiteOpenHelper类来帮助pipe理它。 在应用程序使用过程中,用户可以对数据库执行一些操作,如添加/删除/更新等。 在某些时候,操作的大小将是已知的,如下所示: 用户点击button保存项目 SQLiteDatabase执行一个insert查询 用户继续使用应用 在应用程序的其他领域,操作可能很大,例如一次插入10多个项目到数据库中。 问题: 我应该线程插入/更新/删除/查看1项简单的操作? 将一个项目插入一个包含许多项目(比如30+)的表格比插入一个没有项目的表格需要更长的时间? 如果我不需要线程这样简单的操作,那么你在什么时候开始线程化呢? 当我说的线程我的意思是使用不是主要的UI线程的线程。 编辑:我意识到,小型操作不需要太多的时间,我可以很好地摆脱他们在主线程。 我只是担心在主线程上执行它们是不好的做法,并且需要澄清!

canvas签名触摸在phonegap中造成问题

我发现了一些与“phonegap帆布签名”相关的post,但他们没有帮助。 我有一些下拉框,文本框和一个签名栏。 我想在sqlite数据库中插入这些字段。 我的数据库表创build如下所示: tx.executeSql("CREATE TABLE IF NOT EXISTS parts(id INTEGER PRIMARY KEY AUTOINCREMENT,nr,productId,description,toolsVerified)"); tx.executeSql("CREATE TABLE IF NOT EXISTS costs(id INTEGER PRIMARY KEY AUTOINCREMENT,nr,date,starttime,endtime,reason,cost)"); tx.executeSql("CREATE TABLE IF NOT EXISTS sign(orderNr unique ,rapport,sign)"); 阅读像正常的文本字段值和canvas签名字段的下拉是像 kundusSign = $("#mKundusskirt")[0]; kundensUnderSkrift = kundusSign.toDataURL(); 这里是插入数据的代码: db .transaction(function(tx) { // for parts table tx .executeSql( "insert into parts(nr,productid,description,toolsVerified) values(?,?,?,?)", [ nr, […]

返回Android中SQLite表的所有列

我正在使用的SQLite数据库表经受添加列,只要我需要。 我不想对列进行硬编码,以免更新数据库,而忘记更新硬编码的值。 我怎样才能返回表中所有列的名称? (最好在一个String[] )

自定义ListView和Date作为SectionHeader(使用自定义SimpleCursorAdapter)

我想显示ListView与Date作为SectionHeader。 我有什么:我使用自定义SimpleCursorAdapter从sqlite数据库显示ListView。 我的自定义SimpleCursorAdapter是: public class DomainAdapter extends SimpleCursorAdapter{ private Cursor dataCursor; private LayoutInflater mInflater; public DomainAdapter(Context context, int layout, Cursor dataCursor, String[] from, int[] to) { super(context, layout, dataCursor, from, to); this.dataCursor = dataCursor; mInflater = LayoutInflater.from(context); } public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView […]

Android中的SQLiteDatabase.CursorFactory有什么用?

我已经通过扩展SQLiteOpenHelper类创build了一个数据库。 它的创造也。 这是我正在粘贴的代码 public Imagehelper(Context context) { super(context, DATABASE_NAME, null, SCHEMA_VERSION); cntxt = context; filename = Environment.getExternalStorageDirectory(); DATABASE_FILE_PATH_EXTERNAL = filename.getAbsolutePath()+File.separator+DATABASE_NAME; Log.i("Log", ":"+DATABASE_FILE_PATH_EXTERNAL); } 这里一切工作正常。 但是如果你关注super 超级参数(context,DATABASE_NAME,null,SCHEMA_VERSION); 。 我无法理解空参数。 我知道在这里我们必须传递SQLiteDatabase.CursorFactory对象。 但如何? 那有什么用呢?