标签: android-database

如何将音频/视频文件存储到 android 中的 SQLite 数据库中。?

我是开发新手,通过将图像转换为字节数组并将其存储到 BLOB 中的 SQLite 数据库(在下面的代码中找到),我成功地将图像存储到数据库中。但是我不知道如何将音频/视频存储到数据库中,任何人都可以帮助我 PLZ ...

 public void getImage(View view){
    Intent intent = new Intent();
    intent.setAction(Intent.ACTION_GET_CONTENT);
    intent.setType("image/* video/*");
    startActivityForResult(Intent.createChooser(intent, "select picture"), 1);

}

public void onActivityResult(int requestCode, int resultCode, Intent data){
    if(resultCode == RESULT_OK){
        Uri imageUri = data.getData();
        String imagePath = getPath(imageUri);

        image1.setVisibility(View.VISIBLE);

        image1.setImageURI(imageUri);
        Bitmap bitmap = BitmapFactory.decodeFile(imagePath);
        Toast.makeText(getApplicationContext(), ""+bitmap, Toast.LENGTH_SHORT).show();
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
        img = byteArrayOutputStream.toByteArray();
    }
}

 public String getPath(Uri uri) {
    String[] projection = { MediaStore.Images.Media.DATA };
    Cursor cursor = managedQuery(uri, …
Run Code Online (Sandbox Code Playgroud)

sqlite android sqliteopenhelper android-sqlite android-database

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

Sugar ORM listAll()没有显示任何数据

我正在尝试从listview中获取数据库中的数据,如下所示.

  long count = UserTableSugar.count(UserTableSugar.class);
    if(count>0)
    {
        UserTableSugar.listAll(UserTableSugar.class);
        List<UserTableSugar> userTable = UserTableSugar.listAll(UserTableSugar.class);
        CustomAdapterListview madapter = new CustomAdapterListview(getApplicationContext(),userTable);
        listView.setAdapter(madapter);
    }
Run Code Online (Sandbox Code Playgroud)

但是,数据不会显示出来.在调试时,count的值为2(表中有两个记录).但列表userTable的大小显示为0.

求助:添加模型类的空构造函数就可以了.

android sugarorm android-database

8
推荐指数
1
解决办法
1456
查看次数

为聊天模型定义房间实体之间的一对多关系

我开始使用 Room 数据库并浏览了几个文档来创建房间实体。这些是我的关系。一个聊天频道可以有很多对话。所以这是一对多的关系。因此我创建了如下实体。

渠道实体

@Entity(primaryKeys = ["channelId"])
@TypeConverters(TypeConverters::class)
data class Channel(
    @field:SerializedName("channelId")
    val channelId: String,
    @field:SerializedName("channelName")
    val channelName: String,
    @field:SerializedName("createdBy")
    val creationTs: String,
    @field:SerializedName("creationTs")
    val createdBy: String,
    @field:SerializedName("members")
    val members: List<String>,
    @field:SerializedName("favMembers")
    val favMembers: List<String>
) {
  // Does not show up in the response but set in post processing.
  var isOneToOneChat: Boolean = false
  var isChatBot: Boolean = false
}
Run Code Online (Sandbox Code Playgroud)

对话实体

@Entity(primaryKeys = ["msgId"],
    foreignKeys = [
        ForeignKey(entity = Channel::class,
                parentColumns = arrayOf("channelId"),
                childColumns = arrayOf("msgId"),
                onUpdate = CASCADE, …
Run Code Online (Sandbox Code Playgroud)

database android one-to-many android-database android-room

8
推荐指数
1
解决办法
134
查看次数

使用Android房间持久性库在对象内部插入对象

目录

@Entity(tableName = "directory")
class Directory(@PrimaryKey(autoGenerate = false) var id: Int? = null,
                @ColumnInfo(name = DIR_NAME) var dirName: String? = null,
                @Ignore var dirImages: List<Images>? = null

) : Serializable {
    companion object {
        const val DIR_NAME = "dirName"
        const val DIR_IMAGES = "dirImages"
    }
}
Run Code Online (Sandbox Code Playgroud)

影像模型

@Entity(foreignKeys = arrayOf(ForeignKey(entity = Directory::class,
        parentColumns = arrayOf("id"),
        childColumns = arrayOf("id"),
        onDelete = ForeignKey.CASCADE)))

data class Images(
        @PrimaryKey(autoGenerate = false) val id: Int? = null,
        @ColumnInfo(name = "image") val images: String
) { …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-database android-components android-room

7
推荐指数
1
解决办法
2538
查看次数

Android - 如何从小部件访问房间数据库

我想访问我的小部件类中的 Room DB 以根据存储的数据更新小部件。

这里的问题是 ViewModelProvider 需要一个片段或活动来处理..

ViewModelProviders.of(fragment).get(YourViewModel.class);

这在应用程序小部件类中不可用,所以怎么做?

android android-widget android-database android-room android-architecture-components

7
推荐指数
3
解决办法
4751
查看次数

Room TypeConverter 将多个数据库列转换为一个字段?

有没有一种方法可以让一个 Room TypeConverter 接受多个表字段并将它们组合成某个对象?

作为示例,假设我有一个表 Foo,其中包含列INT numeratorINT denominator(共同表示分数)和INT unit(单位映射到测量单位的枚举)。我想将它们组合成MyScalar(Fraction(numerator, denominator), unit). 例如,可能取一行(1, 5, 2)(映射2到 的位置MeasurementUnit.KG)并使用 a@TypeConverter将此行转换为MyScalar(Fraction(1,5), MeasurementUnit.KG)

现在我只是在做

data class MyEntity(
    val numerator: Int, 

    val denominator: Int, 

    @TypeConverters(IntAndUnitConverter::class) 
    val unit: MeasurementUnit
) {
    fun combine(): MyScalar {
        return MyScalar(Fraction(numerator, denominator), unit)
    }
}
Run Code Online (Sandbox Code Playgroud)

data class MyScalar(val value: Fraction, val unit: MeasurementUnit)
Run Code Online (Sandbox Code Playgroud)

似乎可以解决这个问题,但我发现这个想法很有吸引力,只需让我的 @Entity 将 @TypeConverters(SomeThreeColumnConverter::class) 放在顶部,而不用担心记住调用 merge() 或类似的东西。

我认为不可能,但想检查一下。

android android-database android-room

7
推荐指数
0
解决办法
218
查看次数

为什么 Room.databaseBuilder 函数需要上下文作为 Room 数据库中的参数?

companion object {
        @Volatile
        private lateinit var instance: ExampleDatabase

        fun getInstance(context: Context): ExampleDatabase {
            synchronized(this) {
                if(!::instance.isInitialized) {
                    instance = Room.databaseBuilder(
                        context.applicationContext,  // Why does this require context?
                        LottoDatabase::class.java,
                        "lotto_database"
                    )
                        .fallbackToDestructiveMigration()
                        .build()
                }
                return instance
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

上面的代码是创建房间数据库单例的一般方式。我想知道为什么 Room.databaseBuilder 函数需要上下文作为参数。我知道这个问题可能很愚蠢,因为我对 Android 中的上下文缺乏了解。

  1. 我应该在该参数中传递什么参数?
  2. 如果我传入 Activity 上下文或应用程序,会有什么不同?

android android-context kotlin android-database android-room

7
推荐指数
1
解决办法
628
查看次数

Android:删除整个数据库

我想删除由我的应用程序创建的完整数据库.

你知道任何adb命令或android语句吗?

android adb android-database

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

Android - insertOrThrow()什么时候抛出异常?

在阅读文档之前,如果插入不成功,我希望SQLiteDatabaseinsertOrThrow()方法抛出异常.

但是,文档说的insertOrThrow()方法

返回新插入行的行ID,如果发生错误则返回-1

那么,如果它-1在发生错误时返回,在什么情况下会抛出异常?

sqlite android android-database

6
推荐指数
1
解决办法
3233
查看次数

将具有较少字段的新 POJO 类映射到现有的 Room 表

目前,我们有以下 Dao 和模型类。

笔记道

@Query("SELECT * FROM note")
public abstract LiveData<List<Note>> getAllNotes();
Run Code Online (Sandbox Code Playgroud)

笔记类

@Entity(
    tableName = "note"
)
public class Note {
    @ColumnInfo(name = "title")
    private String title;

    // Can contain a huge String.
    @ColumnInfo(name = "body")
    private String body;
}
Run Code Online (Sandbox Code Playgroud)

但是,在某些情况下,我们只对加载感兴趣title

一次加载所有Note带有大body字符串的s ,可能会导致OutOfMemoryException

有什么办法,我们可以创建另一个 POJO 如下?

public class SimpleNote {
    private String title;
}
Run Code Online (Sandbox Code Playgroud)

然后,我们可以返回SimpleNotefrom 的列表NoteDao

@Query("???")
public abstract LiveData<List<SimpleNote>> getAllSimpleNotes();
Run Code Online (Sandbox Code Playgroud)

sqlite android android-sqlite android-database android-room

6
推荐指数
2
解决办法
1470
查看次数