Comments (5)
还有就是,存放数据库文件的完整目录如果不存在,也会报错,需要我在初始化数据库对象之前,先创建这个目录,文档里并没有说明这些。
安卓端也会报错no such table
from sqllin.
插入到数据库
internal val database by lazy {
Database(name = "MyDatabase.db", path = getGlobalDatabasePath(), version = 1)
}
/**
* 插入数据
*/
suspend fun insert(infoData: InfoPageData) {
if (findByName(infoData.name) != null) {
update(infoData)
return
}
database suspendedScope {
InfoPageDataTable { table ->
table INSERT infoData
}
}
}
@DBRow(tableName = "InfoPage")
@Serializable
data class InfoPageData(
val pageUrl: String,
val name: String,
val otherName: String,
val img: String,
val upTime: String,
val area: String,
val mIndex: String,
val type: String,
val flag: String,
val summary: String,
val dataType: Int = 0,
)
桌面端数据库文件路径
val databaseDir: File
get() = File(
System.getProperty("user.home"),
when (os) {
OS.MacOS -> {
"Library${separator}Application Support${separator}ComposeApp${separator}database"
}
OS.Windows -> {
"AppData${separator}Local${separator}ComposeApp${separator}database"
}
else -> {
".ComposeApp${separator}database"
}
}
)
actual fun getGlobalDatabasePath(): DatabasePath {
val path = databaseDir.absolutePath
val file = File(databaseDir.absolutePath)
if (!file.exists()) {
file.mkdirs()
}
return path.toDatabasePath()
}
Gradle:
// KSP dependencies
dependencies {
// sqllin-processor
add("kspCommonMainMetadata", "com.ctrip.kotlin:sqllin-processor:1.2.4")
}
afterEvaluate {
// WORKAROUND: both register() and named() fail – https://github.com/gradle/gradle/issues/9331
tasks {
withType<KotlinCompile<*>> {
if (name != "kspCommonMainKotlinMetadata")
dependsOn("kspCommonMainKotlinMetadata")
}
}
}
其它:
Java 18
kotlin 1.9.21
ksp 1.9.21-1.0.15
from sqllin.
你文档里面的截图都找到了,表当然需要自己创建。还有文件路径的问题,传入一个可用的路径当然也是使用者需要确保的,自动创建路径一旦遇到非法路径会碰到更多问题。还有,基于文档原则,如果 SQLlin 会自动帮用户完成某事会在文档中说明,否则则是文档 bug。用户不应该期待一个库会做到文档中没有提到的事情。
from sqllin.
另外需要补充的是,对于“会改变数据库结构的操作“,文档中已经进行了说明,请仔细阅读文档:
![截屏2024-01-22 22 30 57](https://private-user-images.githubusercontent.com/20186724/298618899-03fe48eb-b242-495c-af9f-920f595a1286.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTEwMTc3MzksIm5iZiI6MTcxMTAxNzQzOSwicGF0aCI6Ii8yMDE4NjcyNC8yOTg2MTg4OTktMDNmZTQ4ZWItYjI0Mi00OTVjLWFmOWYtOTIwZjU5NWExMjg2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDAzMjElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwMzIxVDEwMzcxOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTVmODM1OGVhOTg0ZWNhYmNhZWNhYmNlNDc1NDUwMTdkMThkNWJmNmI3ZDZkZjQ2NmZhZjg3ODcyYWJhZDNiMzgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.zgNqASh57CiGgKd15j2QdtiaceYhD04mK_iGCvt0xZs)
from sqllin.
我是直接从jetpack room过来的,并不知道首次创表是需要写sql的,你文档也不是写的首次-创表需要在create里写sql,因为你那儿写的是可以采用更多配置来创建数据库,而不是必须要通过这种方式首次完成创表。我的想法是你都支持给data class加dbrow注解了,应该和room一样自动完成创表。
当然,这些都不重要了,现在我知道了。
感谢你花时间回答我。
另外我还是建议一下你文档在写明白点,我觉得今后也许有不少人会跟我一样遇到这情况。
from sqllin.
Related Issues (20)
- Implement a Kotlin/Native SQLite driver to replace the SQLiter HOT 1
- Could not find org.jetbrains.kotlinx-atomicfu-0.17.3-nativeInterop-8G5yng.klib HOT 3
- Support for WASM target HOT 2
- Unable to link under Linux HOT 7
- Native driver does not respect isReadOnly HOT 9
- Uncaught Kotlin exception: com.ctrip.sqllin.driver.SQLiteResultCode: error rawExecSql: PRAGMA user_version = 1;, attempt to write a readonly database | error code SQLITE_READONLY HOT 8
- Long在ksp阶段有问题,生成的代码无法通过编译 HOT 2
- (Feature Request)有计划提供执行原生sql的api吗? HOT 7
- Update Kotlin version: 1.9.20 -> 1.9.21 HOT 1
- org.gradle.api.artifacts.UnknownConfigurationException: Configuration with name 'kspMainMetadata' not found. HOT 1
- 自增主键ID问题 HOT 2
- 我按照说明文档一步一步进行,但无法正常使用 HOT 18
- 功能建议:可否添加 查询结果 采用Flow返回 HOT 1
- 关于实体类里的字段数量不能比表中的列数多的问题 HOT 1
- How to nore the columns in model HOT 2
- 要存入或要查询的字符串中包含 ' 符号会报错 unrecognized token,这个要怎么解决 HOT 2
- 较为复杂点的查询语句 HOT 2
- Sorry, Suspending maintaining for a few months HOT 1
- 在一些库更新了版本后,目前ios无法运行了 HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sqllin.