标签: android-sqlite

内容提供商中Android投影地图的目的是什么?

我正在查看Android记事本应用程序示例代码<path_to_SDK>/samples/android-16/NotePad/src/com/example/android/notepad.

我想知道是否有人可以向我解释为什么需要以下代码NotepadProvider.java

// Creates a new projection map instance. The map returns a column name
// given a string. The two are usually equal.
sNotesProjectionMap = new HashMap<String, String>();

// Maps the string "_ID" to the column name "_ID"
sNotesProjectionMap.put(NotePad.Notes._ID, NotePad.Notes._ID);

// Maps "title" to "title"
sNotesProjectionMap.put(NotePad.Notes.COLUMN_NAME_TITLE,NotePad.Notes.COLUMN_NAME_TITLE);

// Maps "note" to "note"
sNotesProjectionMap.put(NotePad.Notes.COLUMN_NAME_NOTE, NotePad.Notes.COLUMN_NAME_NOTE);

// Maps "created" to "created"
sNotesProjectionMap.put(NotePad.Notes.COLUMN_NAME_CREATE_DATE, NotePad.Notes.COLUMN_NAME_CREATE_DATE);

// Maps "modified" to "modified"
sNotesProjectionMap.put(
        NotePad.Notes.COLUMN_NAME_MODIFICATION_DATE,
        NotePad.Notes.COLUMN_NAME_MODIFICATION_DATE)
Run Code Online (Sandbox Code Playgroud)

我注意到投影贴图稍后在query()方法中使用:

...
SQLiteQueryBuilder qb = …
Run Code Online (Sandbox Code Playgroud)

android android-contentprovider android-sqlite

12
推荐指数
2
解决办法
9421
查看次数

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 CODE
    }

    private static void fakeRelationship(Schema schema) {
            Property author = message.addLongProperty("author").getProperty();
            Property parent = message.addLongProperty("parent").getProperty();

            message.addToOne(user, author);
            message.addToOne(conversation, parent); …
Run Code Online (Sandbox Code Playgroud)

android android-sqlite greendao

12
推荐指数
1
解决办法
3530
查看次数

Android SQLite关闭异常

我没有扎实的同步背景.我认为当我使用synchronized方法时,这个问题将得到修复.但有人可以帮我解决这个问题吗?代码如下:

public HashMap<String, FriendInfo> getAllRecordsInList_HashMap() {

        MySQLiteHelper dbHelper = MySQLiteHelper.getInstance(mActivity);
        HashMap<String, FriendInfo> list_map = new HashMap<String, FriendInfo>();

        SQLiteDatabase db = dbHelper.getReadableDatabase();
        // Cursor cursor = db.rawQuery("SELECT * from " +
        // dbHelper.tbl_friendlist, new String[] {});
        String[] cols = { dbHelper.id, dbHelper.name, dbHelper.picture, dbHelper.birthday, dbHelper.livein, dbHelper.gender, dbHelper.is_online, dbHelper.is_vip };
        Cursor cursor = db.query(dbHelper.tbl_friendlist, cols, null, null, null, null, dbHelper.name);

        if (cursor != null && cursor.getCount() > 0) {

            // some code here....
        }
        cursor.close();
        return list_map;
    }
Run Code Online (Sandbox Code Playgroud)

不同的线程可以调用此方法getAllRecordsInList_HashMap() …

android android-sqlite

12
推荐指数
2
解决办法
2万
查看次数

使用Android和Phonegap存储SQLite数据库

我正在开发一个Android Cordova/Phonegap应用程序,我想使用SQLite数据库.我使用了官方文档中的示例.

// Wait for device API libraries to load
//
document.addEventListener("deviceready", onDeviceReady, false);

// Populate the database
//
function populateDB(tx) {
    tx.executeSql('DROP TABLE IF EXISTS DEMO');
    tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
    tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');
    tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');
}

// Query the database
//
function queryDB(tx) {
    tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB);
}

// Query the success callback
//
function …
Run Code Online (Sandbox Code Playgroud)

database sqlite android cordova android-sqlite

12
推荐指数
2
解决办法
3万
查看次数

如何修复Android内容提供商中找不到的内容提供商网址?

我按照下面的教程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)
Run Code Online (Sandbox Code Playgroud)

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 = (Spinner) findViewById(R.id.category);
        mTitleText = (EditText) findViewById(R.id.todo_edit_summary);
        mBodyText = (EditText) findViewById(R.id.todo_edit_description);
        Button confirmButton = (Button) findViewById(R.id.todo_edit_button);

        Bundle extras = getIntent().getExtras();

        // check from the saved …
Run Code Online (Sandbox Code Playgroud)

android android-contentprovider android-sqlite

12
推荐指数
1
解决办法
2万
查看次数

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

我开发了一个Android-App,我使用SQLiteOpenHelper将数据保存在SQLite数据库中.

我想知道我是否可以使用ActiveAndroid更新我的应用程序,但是以某种方式保存以前存储在数据库中的用户数据.

那可能吗?

database android activeandroid android-sqlite

12
推荐指数
1
解决办法
823
查看次数

Android SQLite数据库单元测试

我是Android应用程序开发的新手,我刚做了一个笔记应用程序.我想为数据库的insertNote,readNote和updateNote方法进行单元测试.我该怎么做?这是我的数据库的代码.谢谢.

public class  DatabaseManager extends SQLiteOpenHelper {


public static final String Database_Name = "Notes Database";
public static final String Table_Name = "notes";

public static final String Column_id = "textId";
public static final String Column_title = "textTitle";
public static final String Column_body = "textBody";

public DatabaseManager(Context context){
    super(context, Database_Name, null, 1);
}

@Override
public void onCreate(SQLiteDatabase db){
    db.execSQL("CREATE TABLE " + Table_Name + " (" + Column_id +
            " INTEGER PRIMARY KEY AUTOINCREMENT, " + Column_title +
            " TEXT, " + …
Run Code Online (Sandbox Code Playgroud)

sqlite android unit-testing android-testing android-sqlite

12
推荐指数
2
解决办法
2万
查看次数

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 13:47:49.117: E/SQLiteDatabase(11055): android.database.sqlite.SQLiteReadOnlyDatabaseException: attempt to write a readonly database (code 1032)
01-29 13:47:49.117: E/SQLiteDatabase(11055):    at android.database.sqlite.SQLiteConnection.nativeExecuteForLastInsertedRowId(Native Method)
01-29 13:47:49.117: E/SQLiteDatabase(11055):    at android.database.sqlite.SQLiteConnection.executeForLastInsertedRowId(SQLiteConnection.java:780)
01-29 13:47:49.117: E/SQLiteDatabase(11055):    at android.database.sqlite.SQLiteSession.executeForLastInsertedRowId(SQLiteSession.java:788) …
Run Code Online (Sandbox Code Playgroud)

sqlite android android-sqlite

12
推荐指数
1
解决办法
1万
查看次数

使用room persistent library更新参数

如何使用房间库更新整行,@ Update使用@Entity注释对象并通过引用主键更新它但是如何通过某些其他参数更新,其中某些值与某行中的单元格中的值匹配.

//Simple update
@Update
int updateObject(ObjectEntity... objectEntities);

//Custom Update
@Query(UPDATE TABLENAME ????)
int updateObject(ObjetEntity objectEntity,String field);
Run Code Online (Sandbox Code Playgroud)

我应该通过什么代替???? 这样新的objectEntity将被字段值匹配的旧object替换.

android android-sqlite android-room

12
推荐指数
3
解决办法
1万
查看次数

是否可以在android Room Query中使用StringFormat或Constant Variable

我想使用公共常量变量Association.MEMBER_STATUS_APPROVED使用以下房间查询来查询用户关联列表。

@Query("SELECT * FROM Association WHERE memberStatus = " + Association.MEMBER_STATUS_APPROVED)
LiveData<List<Association>> loadUserAssociations();
Run Code Online (Sandbox Code Playgroud)

但是,房间在构建时给了我 [SQLITE_ERROR]。可以通过用如下参数替换常量变量来重写该查询。

@Query("SELECT * FROM Association WHERE memberStatus = :statusApproved")
LiveData<List<Association>> loadUserAssociations(String statusApproved);
Run Code Online (Sandbox Code Playgroud)

我想知道 Room 是否支持这种字符串连接或字符串格式?(或)我可能遗漏了什么吗?

database android android-sqlite android-room

12
推荐指数
2
解决办法
2275
查看次数