网易首页 > 网易号 > 正文 申请入驻

java sqlite jdbc kotlin jdbc

0
分享至

服务端可以使用Sqlite数据库吗?

当然是可以的。SQLite在小、中型流量的网站上还是可以用的。通常情况下,每天点击量在100K(10万)以下是完全没有问题的。

首先要添加依赖包:

dependencies {... implementation "org.xerial:sqlite-jdbc:3.36.0.2" ...}//数据库操作object DBUtil { private const val url = "jdbc:sqlite:dbs/hy_users.db" /** * 支持drop table、create table、insert into、update…… * @param sql 数据库查询语句 * @param params PreparedStatement使用的参数 * @param timeout 超时时间 * @param block 接收返回的每一行数据 */ fun update(sql: String, params: Array?>? = null, timeout: Int = 30): Boolean { var state = 0 dose { if (params != null) { val statement = getPreparedStatement(it, sql, timeout, params) state = statement.executeUpdate() } else { val statement = it.createStatement() statement.queryTimeout = timeout state = statement.executeUpdate(sql) } } return state > 0 } /** * 查询操作 * @param sql 数据库查询语句 * @param params PreparedStatement使用的参数 * @param timeout 超时时间 * @param block 接收返回的每一行数据 */ fun query(sql: String, params: Array?> = arrayOf(), timeout: Int = 30, block: (ResultSet) -> Unit) { dose { if (params.isNotEmpty()) { //使用PreparedStatement val statement = getPreparedStatement(it, sql, timeout, params) val rs = statement.executeQuery() while (rs.next()) { block(rs) } } else { //使用Statement val statement = it.createStatement() statement.queryTimeout = timeout val rs = statement.executeQuery(sql) while (rs.next()) { block(rs) } } } } /** * 获取PreparedStatement */ private fun getPreparedStatement( it: Connection, sql: String, timeout: Int, params: Array?> ): PreparedStatement { val statement = it.prepareStatement(sql) statement.queryTimeout = timeout for (i in 1..params.size) { when (val a = params[i - 1]) { null -> statement.setNull(i, Types.NULL) is String -> { when { RegexUtil.isTimestamp(a) -> { statement.setTimestamp(i, Timestamp.valueOf(a)) } RegexUtil.isShortDate(a) -> { statement.setDate(i, Date.valueOf(a)) } RegexUtil.isShortTime(a) -> { statement.setTime(i, Time.valueOf(a)) } else -> { statement.setString(i, a) } } } is Boolean -> statement.setBoolean(i, a) is Byte -> statement.setByte(i, a) is Short -> statement.setShort(i, a) is Int -> statement.setInt(i, a) is Long -> statement.setLong(i, a) is Float -> statement.setFloat(i, a) is Double -> statement.setDouble(i, a) is BigDecimal -> statement.setBigDecimal(i, a) is ByteArray -> statement.setBytes(i, a) is Date -> statement.setDate(i, a) is Time -> statement.setTime(i, a) is Timestamp -> statement.setTimestamp(i, a) } } return statement } /** * 获取数据库连接并执行数据库操作 */ private fun dose(block: (Connection) -> Unit) { try { DriverManager.getConnection(url).use { block(it) } } catch (e: SQLException) { System.err.println(e.message) } }}

再上个Dao的代码:

object UserDao { /** * 创建用户 */ fun createUser(user: User): String { var str = HyCode.dbError val sql = "insert into User(name,password) values(?,?)" val flag = DBUtil.update(sql, arrayOf(user.name, user.password)) if (flag) { str = HyCode.dbSuccess } return str } /** * 通过用户名查询用户 */ fun findUserByName(name: String): User? { var user: User? = null val sql = "select * from User where name=?" DBUtil.query(sql, arrayOf(name)) { user = User(it.getString("name"), it.getString("password"), it.getInt("id")) } return user } /** * 通过用户名查询用户Id */ fun findUserIdByName(name: String): Int? { var userId: Int? = null val sql = "select id from User where name=?" DBUtil.query(sql, arrayOf(name)) { userId = it.getInt("id") } return userId }}

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
笑死!周扬青内涵庆奶整容,被回怼到哑口无言,网友:自取其辱

笑死!周扬青内涵庆奶整容,被回怼到哑口无言,网友:自取其辱

丹妮观
2026-02-02 17:49:06
精神病不够,正常人来凑!襄阳精神病院成国内园区,产业链被曝光

精神病不够,正常人来凑!襄阳精神病院成国内园区,产业链被曝光

垛垛糖
2026-02-04 10:52:50
地主王学文救起晕倒的女红军,她拉开衣襟的那刻,王学文吓一跳

地主王学文救起晕倒的女红军,她拉开衣襟的那刻,王学文吓一跳

磊子讲史
2026-01-06 10:38:15
马斯克彻底搞定大圆柱电池!发布五年终落地,独家专利破解量产难题

马斯克彻底搞定大圆柱电池!发布五年终落地,独家专利破解量产难题

车东西
2026-02-02 18:52:55
中国发出禁令,委内瑞拉石油不能靠岸,美方派人打听,遭已读不回

中国发出禁令,委内瑞拉石油不能靠岸,美方派人打听,遭已读不回

长星寄明月
2026-02-04 12:08:00
侍卫救了乾隆的命,乾隆问他要何赏赐?侍卫:就赏我一个宫女吧

侍卫救了乾隆的命,乾隆问他要何赏赐?侍卫:就赏我一个宫女吧

铭记历史呀
2026-01-26 19:47:25
全满贯后的沉默:阿尔卡拉斯与费雷罗之间发生了什么?

全满贯后的沉默:阿尔卡拉斯与费雷罗之间发生了什么?

网球之家
2026-02-04 23:09:31
未成年女性日记曝光:爱泼斯坦将她作为“孵化器”,其痴迷于“优越基因库”

未成年女性日记曝光:爱泼斯坦将她作为“孵化器”,其痴迷于“优越基因库”

红星新闻
2026-02-04 13:50:19
蔡英文可能回锅参选吗?蓝营议员:萧美琴接棒可能性极高

蔡英文可能回锅参选吗?蓝营议员:萧美琴接棒可能性极高

海峡导报社
2026-02-04 10:02:02
在内蒙古草原上,为啥当地人更喜欢煮羊肉,而不是更诱人的烤羊肉

在内蒙古草原上,为啥当地人更喜欢煮羊肉,而不是更诱人的烤羊肉

向航说
2026-01-31 00:55:03
法国猫徒步5个月从西班牙回家!只为再蹭蹭主人的手

法国猫徒步5个月从西班牙回家!只为再蹭蹭主人的手

新欧洲
2026-01-28 21:37:40
以色列首位女穆斯林阿拉伯语发言人上任

以色列首位女穆斯林阿拉伯语发言人上任

桂系007
2026-02-05 00:16:49
三国石油储量对比:俄800亿桶,美700亿,中国储量出人意料

三国石油储量对比:俄800亿桶,美700亿,中国储量出人意料

完善法
2026-02-04 19:29:46
英媒透露安全保障具体措施,美军将在必要时参战:乌克兰不再天真

英媒透露安全保障具体措施,美军将在必要时参战:乌克兰不再天真

鹰眼Defence
2026-02-04 18:17:12
5个首轮签白瞎了!坐拥一群顶级天赋,结果却让伪球星老大耽误了

5个首轮签白瞎了!坐拥一群顶级天赋,结果却让伪球星老大耽误了

你的篮球频道
2026-02-04 14:09:53
明朝锦衣卫的灭亡:大小头目全部遇难,一天之内便被消灭殆尽!

明朝锦衣卫的灭亡:大小头目全部遇难,一天之内便被消灭殆尽!

铭记历史呀
2026-01-31 23:08:25
老板都是怎么把自己生意干黄的?网友:29.7收30,三个月不到就黄了

老板都是怎么把自己生意干黄的?网友:29.7收30,三个月不到就黄了

另子维爱读史
2026-02-02 21:22:54
贝克汉姆再遭打击,大布除掉了“爸爸”刺青,球星对长子的爱仍在

贝克汉姆再遭打击,大布除掉了“爸爸”刺青,球星对长子的爱仍在

译言
2026-02-05 11:01:14
红装登场判若两人!锤娜丽莎逆袭全网直呼不敢认

红装登场判若两人!锤娜丽莎逆袭全网直呼不敢认

淡淡稻花香s
2026-02-05 02:49:17
后怕!如果当初决策层相信了许小年,中国可能会比现在落后二十年

后怕!如果当初决策层相信了许小年,中国可能会比现在落后二十年

蓝色海边
2026-02-05 07:55:38
2026-02-05 12:24:49
流颜菲雨桃花路
流颜菲雨桃花路
一遍又一遍的去重温经典动漫
46文章数 0关注度
往期回顾 全部

科技要闻

微信给马化腾浇了“一盆冷水”

头条要闻

牛弹琴:中国元首和特朗普通话 特朗普就台湾问题表态

头条要闻

牛弹琴:中国元首和特朗普通话 特朗普就台湾问题表态

体育要闻

奇才:我学生……独行侠:成交!

娱乐要闻

谢娜明年开演唱会:带老歌出来见见人

财经要闻

黄金,出现拐点

汽车要闻

一切交给XWD 捷途旅行者C-DM也能轻松刷冰锅

态度原创

旅游
亲子
本地
公开课
军事航空

旅游要闻

上海新春景观焕新:花海、光影、市集全城迎马年

亲子要闻

孩子的脸,是家庭最诚实的计分器

本地新闻

围观了北京第一届黑色羽绒服大赛,我笑疯了

公开课

李玫瑾:为什么性格比能力更重要?

军事要闻

卡扎菲儿子被暗杀:4名蒙面人员闯入住所

无障碍浏览 进入关怀版