范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

使用jdbc操作SQLite数据库(Kotlin版)

  服务端可以使用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     } }

因需求放缓,苹果计划在下季度将iPhoneSE减产20周一(3月28日),日本经济新闻援引知情人士消息称,由于乌克兰危机和通货膨胀导致需求放缓,苹果公司计划降低iPhone和AirPod的产量。根据报道,苹果计划在下个季度将iPhon欧盟数字市场法预计今年10月生效,直指亚马逊苹果谷歌等科技巨头21世纪经济报道记者张雅婷实习生高艺广州报道据欧盟委员会官方消息,欧盟委员会执行副主席竞争事务专员玛格丽特维斯塔格日前在演讲中表示,2020年12月公布的数字市场法(Digital苹果WWDC2022或定于6月6日M2芯片的iPadPro要来了?自从苹果的春季新品发布会结束后,接下来值得期待就是开发者大会和一年一度的秋季新品发布会了。根据据苹果知名爆料人JonProsser透露,苹果今年可能会在6月6日举行开发者大会,并且安卓之光怒降1500,为何受伤的总是抢首发用户?每年34月份是手机厂商集体上新的时间节点。全新制程工艺处理器规格更高的影像元器件更快更稳地快充技术贴心实用的用机功能都在不断刺激消费者的购机心理,本着尝鲜好奇心理和买新不买旧的理念华为或将推出巨屏手机!配6000mAh电池,后置镜头模组类似启瓶器大屏手机在当下还是很深得用户芳心的,但我们发现很少有高端旗舰机型做大屏设计,一方面是成本问题,一方面则是受众群体偏少一些。不过华为似乎有一个大胆的决定,爆料称华为或许会在未来发布一滴滴口碑值有变,合规成派单量关键,无证司机还没开始就输了?网约车市场真是一波三折,资本撤退运力不足订单下滑,平台和司机身陷信任危机,不再是无懈可击。下半场才刚刚开始,运力争夺日益激烈,滴滴动真格了,阳光出行哈啰一喂顺风车等后来者可谓是压力数字孪生技术与工程实践全套PPT(共计7章,287页)来源机工教育原创出品球知名的未来学家ThomasFrey预测,到2022年,85的物联网平台将使用某种数字孪生技术进行监控,并且在智能家居管理中心工业设备监控远程操控智慧城市管理现一分钟了解DNA比对工作是什么一分钟告诉你DNA比对工作的原理!人都是由受精卵发育而来,受精卵由父母双方各提供一半基因。基因又由ATGC四种碱基按父母基因的规律排列而成。当受精卵进行发育细胞分裂等过程以后,就演研究发现,男生脚趾最怕痒,女生呢?作者李木子TickleFoot图片来源DonSamithaElvitigala美国计算机学会人机交互汇刊日前发布的一项研究发现,女性脚底最怕痒的位置是足弓中心,而对于男性来说,则是今日美股美股三大指数上涨,科技股领涨,苹果连续十个交易日收涨3月29日,资本邦了解到,截至美东时间3月28日收盘,美股三大指数上涨。道指涨94。65点,涨幅为0。27,报34955。89点纳指涨185。60点,涨幅为1。31,报14354。传苹果将大幅削减iPhone及AirPods订单,立讯精密歌尔股份回应记者徐诗琪编辑当地时间3月28日,日经亚洲援引知情人士称,苹果公司计划将下季度的iPhoneSE产量减少20,这是近期国际形势动荡导致的消费电子产品需求削弱的迹象之一。上述报道称,
比特币矿商IrisEnergy计划在纳斯达克上市前融资2亿美元比特币矿商IrisEnergy计划在寻求在纳斯达克直接上市之前,立即进行一轮融资,筹集2亿美元。IrisEnergy可能决定放弃上市计划,据报道,有几家SPAC与它接触,商讨在美国PayPal将把每周加密货币购买限额上调至10万美元据报道,美国支付服务平台PayPal将用户的加密货币购买限额上调至原先的5倍。PayPal用户现在每周可以购买价值10万美元的比特币和其他数字货币资产,而之前的上限仅为2万美元。该中国比特币矿工正准备涌入巴拉圭据报道,中国的比特币矿工正准备成群结队地涌入巴拉圭,报道称,如果监管机构不阻止矿工,未来三年该国可能有50万台在线钻机,一些工业企业已经在这个南美国家建立了商店。根据巴拉圭矿业公司自5月以来,比特币首次突破50,000美元周日晚上,比特币回到50,000美元大关,这是一个重要的价格里程碑,上一次比特币价值5万美元是在5月中旬,特斯拉首席执行官埃隆马斯克表示,由于环境问题,他的公司将不再接受比特币作为凯利泰冯柳只是个过客?AAAA代表基本面非常优秀,BBBB代表基本面比较优秀,CCCC代表概念性比较强。评级仅为个人观点,仅供参考,不作为投资建议。数据截止日期2019年6月30日单位亿元证券代码300科博达新股跌停,机会还是大坑?证券简称科博达评级AAAAAA代表基本面非常优秀,BBBB代表基本面比较优秀,CCCC代表概念性比较强,评级仅为个人观点,仅供参考,不作为投资建议。数据截止日期2019年6月30日利安隆历史新高唾手可得?证券简称利安隆评级BBBAAAA代表基本面非常优秀,BBBB代表基本面比较优秀,CCCC代表概念性比较强,评级仅为个人观点,仅供参考,不作为投资建议。数据截止日期2019年9月30安井食品百亿市值只是刚起步?证券简称安井食品评级AAAAAA代表基本面非常优秀,BBBB代表基本面比较优秀,CCCC代表概念性比较强,评级仅针对公司基本面,为个人观点,仅供参考,不作为投资建议。数据截止日期2iPhone12抢先爆料无刘海全面屏A14芯片,网友价格一定暴涨!由于疫情爆发,苹果取消了春季发布会,改为网上直销。iPadPro几天前突然在官方网站上更新,据透露iPhone9和苹果第一代5Giphone12将一起发布。就iPadpro而言,这不笑你打我精选内涵段子1。带破洞的牛仔裤刚流行那年,邻村有个青年因打架伤人坐了两年牢出狱了,他老婆给他带来了一身新衣裤。当他换上了当时最流行的破洞牛仔裤后百感交集,抱着他老婆放声大哭,连声追佩蒂股份全球宠物咬胶龙头,出口转内销增长空间巨大独立客观第三方研究,为您筛选优质上市公司证券代码300673综合评级A一主营业务评分751业务分析公司是我国较早从事宠物食品产业的企业之一,主要产品有畜皮咬胶植物咬胶宠物营养肉质零