Tag: 数据库

使用房间数据库(房间持久性库)创建触发器

如何使用房间持久性库“ 创建触发器 ” CREATE TRIGGER IF NOT EXISTS delete_till_10 INSERT ON user WHEN (select count(*) from user)>9 BEGIN DELETE FROM user WHERE id IN (SELECT id FROM user ORDER BY id limit (select count(*) -9 from user)); END

生成人类可读/可用,简短但唯一的ID

每天需要处理> 1000但是<10000条新记录 不能使用GUID / UUID,自动递增数字等 理想情况下应该是5或6个字符长,当然可以是阿尔法 如果可用的话,希望重用现有的,众所周知的算法 什么都有

房间条件

我正在重构一个旧的应用程序,试图改变查询房间是简单的查询直截了当,但现在我需要一个方法来根据查询结果返回一个字符串,我不知道如何完成它? @Query("SELECT * FROM $SHIFT_TABLE WHERE ($SHIFT_START_DATE BETWEEN :arg0.startDateTime AND :arg0.endDateTime ) OR $SHIFT_END_DATE BETWEEN :arg0.startDateTime AND :arg0.endDateTime )" + " OR (($SHIFT_START_DATE <= :arg0.startDateTime) AND ($SHIFT_END_DATE >= :arg0.endDateTime ))") fun create(shift: Shift) { //there is a shift at that time return shift_overlapping_with_other_shift //shift is shorter that 1 minute return shifts_shorter_than_one_minute_are_not_recorded //else enter the shift […]

连接到单个数据库

我有2个类连接到数据库。 但是对于我目前的实现,我必须连接到2个不同的数据库。我可以如何解决这个问题? 如果我为两个数据库使用相同的名称,它会给我一个错误 一类….. public static final String DATABASE_NAME = "140398L.db"; Context context; public PersistantAccountDAO(Context context) { super(context, DATABASE_NAME, null, 1); this.context = context; } 其他班…… public class PersistantTransactionDAO extends SQLiteOpenHelper implements TransactionDAO { public static final String DATABASE_NAME = "140398L"; public PersistantTransactionDAO(Context context) { super(context, DATABASE_NAME, null, 1); }

领域返回陈旧的数据

我没有很多编写Android应用程序的经验。 为了好玩,我正在编写一个应用程序,将我的通话记录上传到我的服务器。 这整个应用程序是作为服务运行。 服务(在电话启动时开始)是注册ContentObserver的服务,然后调用我的自定义CallLog类。 我使用ContentObserver来侦听内容更改事件。 不幸的是,当我拨号时,ContentObserver被多次调用。 出于这个原因,我有一个函数,我称为markAsUploaded()成功上传后(我使用Retrofit markAsUploaded() 。 这个函数创建了一个名为CallLogUploaded (与我的常规CallLog模型不同)。 这个CallLogUploaded只有一个标识符,它是呼叫的dateTime时间,应该是足够独特的。 然后,当我遍历所有通话记录的列表时,我将检查每一个呼叫记录与一个isDataUploaded()函数,该函数执行一个Realm查询,并检查是否已经存在一个具有存储在数据库(领域)。 理论上,它应该工作。 但是,我注意到它并不总是工作。 我的数据看起来经常是陈旧的。 当我realm.isAutoRefresh() ,它返回false(虽然我发誓它返回一次)。 在我的isDataUploaded函数中,即使我在Realm上执行findAll() ,也没有看到所有的数据 – 但是数据肯定是碰到了markDataAsUploaded函数的。 这是我的代码 – 这是在Kotlin,但应该很容易理解: val callLogCall = service.sendCalLLogs(childId, dataToUpload) callLogCall.enqueue(object : Callback<Void> { override fun onResponse(call: Call<Void>, response: Response<Void>) { if (response.isSuccessful) { Log.i(AppConstants.LOG_TAG, "Call log data uploaded successfully!") this@CallLogData.markDataAsUploaded(dataToUpload) } else { Log.w(AppConstants.LOG_TAG, […]

领域executeTransactionAsync不写入数据到数据库

我在我的项目中使用领域数据库。 我想在应用程序第一次启动时,将我的资产文件夹中的JSON数据写入领域。 我使用Kotlin。 我启动我的领域: Realm.init(this) val config = RealmConfiguration.Builder() .rxFactory(RealmObservableFactory()) .build() Realm.setDefaultConfiguration(config) 比我想异步写入List<Data>我的数据库: val realm = Realm.getDefaultInstance() realm.executeTransactionAsync { realm.copyToRealm(skillsList) } realm.close() 但是我的领域db是空的。 realm.copyToRealm(skillsList)我有空表。 哪里不对? 我用Stetho检查桌子,它真的是空的。 我可以修复它?

用Android写入数据库

我试图用Kotlin在图书馆里使用Volley写数据库,当我尝试什么都没有发生时。 我用邮递员来查看服务器是否有问题,一切正常。 根据我的问题来自我的代码的这一部分: val stringRequest = object : StringRequest(Request.Method.POST, "myURL", Response.Listener<String> { response -> try { val obj = JSONObject(response) Toast.makeText(applicationContext, obj.getString("message"), Toast.LENGTH_LONG).show() } catch (e: JSONException) { e.printStackTrace() } }, object : Response.ErrorListener { override fun onErrorResponse(volleyError: VolleyError) { Toast.makeText(applicationContext, volleyError.message, Toast.LENGTH_LONG).show() } }) { @Throws(AuthFailureError::class) override fun getParams(): Map<String, String> { val params […]

Android:如何为Kotlin中的所有对象列表创建类型转换器(for Room)

我在我的项目中使用Room作为本地数据库解决方案。 对于某个对象类型的每个列表,我已经添加了类型转换器到项目中,所以类型转换器看起来像这样: @TypeConverter fun convertListToString(video: List<VideoType>): String { val videoArray = arrayOfNulls<VideoType>(video.size) for (i in 0..video.size – 1) { videoArray[i] = video[i] } var str = "" val gson = Gson() for (i in videoArray.indices) { val jsonString = gson.toJson(videoArray[i]) str = str + jsonString if (i < videoArray.size – 1) { str = str […]

Firebase映射到Kotlin-Object不起作用

我的问题是,对象“财务”的价值不会自动获取… 我的数据库屏幕截图 包含财务对象的人对象: @PaperParcel open class Person(@PropertyName("Name") var name: String, @PropertyName("Finanzen") var finances: Finances): PaperParcelable { constructor() : this("", Finances()) companion object { val CREATOR = PaperParcelPerson.CREATOR } } 没有获取的财务 – 对象: @PaperParcel open class Finances(@PropertyName("Anspruch") var credit: Double, @PropertyName("Schulden") var debts: Double, @PropertyName("Shisha") var shisha: Double, @PropertyName("Strafe") var fines: Double ): PaperParcelable { constructor() […]

Kotlin数据库连接错误

线程“main”中的异常kotlin.KotlinNullPointerException在Kotlin.main(DB.kt:4) 任何人都可以解释我是什么,我应该怎么做来处理这个异常? object Kotlin { @JvmStatic fun main(args: Array<String>) { val conn: Connection = null!! val url = "jdbc:mysql://localhost:3306/" val dbName = "db-01" val driver = "com.mysql.jdbc.Driver" try { Class.forName(driver).newInstance() conn = DriverManager.getConnection("jdbc:mysql://localhost/student") println("Connected to the database") conn.close() println("Disconnected from database") } catch (e: Exception) { e.printStackTrace() } } }