You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android输入字符串错误:插入数据库时遇问题求助

解决Android插入数据库时的字符串转整数错误

嘿,我一眼就发现问题所在了!你现在的代码里试图把带分隔符的日期、时间字符串直接转成整数,这必然会触发NumberFormatException——毕竟Integer.parseInt()根本没法解析带/或者:的字符串呀。

先看你代码里的问题核心:

int date = Integer.parseInt(mydp.getDayOfMonth() + "/" + (mydp.getMonth()+1) + "/" + mydp.getYear());
int time = Integer.parseInt(mytp.getHour() + ":" + mytp.getMinute());

比如生成的日期字符串是"15/10/2024",时间是"14:30",这些都不是合法的整数字符串,Java的整数解析器完全无法识别,自然会报错。

下面给你几个可行的解决思路:

方案1:直接用字符串存储日期和时间

如果你的数据库字段支持字符串类型,这是最简单的办法,直接跳过类型转换:

String date = mydp.getDayOfMonth() + "/" + (mydp.getMonth()+1) + "/" + mydp.getYear();
String time = mytp.getHour() + ":" + mytp.getMinute();

之后直接把这两个字符串插入数据库即可,后续查询出来也能直接展示给用户。

方案2:转换为时间戳存储(推荐)

如果需要对日期时间进行排序、比较或者计算,存储时间戳会更灵活。你可以先把日期和时间组合成标准格式的字符串,再解析成时间戳:

// 组合成yyyy-MM-dd HH:mm格式的字符串
String dateTimeStr = String.format("%d-%02d-%02d %02d:%02d",
        mydp.getYear(),
        mydp.getMonth() + 1,
        mydp.getDayOfMonth(),
        mytp.getHour(),
        mytp.getMinute());

// 用Java 8+的DateTimeFormatter解析(线程安全)
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
LocalDateTime localDateTime = LocalDateTime.parse(dateTimeStr, formatter);
// 转换为毫秒级时间戳,存到数据库的long类型字段中
long timestamp = localDateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();

如果你的项目还在使用Java 7及以下,可以用SimpleDateFormat(注意线程不安全,尽量不要在多线程环境下共用实例):

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
try {
    Date date = sdf.parse(dateTimeStr);
    long timestamp = date.getTime();
} catch (ParseException e) {
    e.printStackTrace();
    // 这里可以给用户提示日期时间解析失败,比如弹窗提醒
}

方案3:拆分字段存储

如果数据库设计允许,也可以把日期和时间拆分成多个整数字段存储:

int year = mydp.getYear();
int month = mydp.getMonth() + 1;
int day = mydp.getDayOfMonth();
int hour = mytp.getHour();
int minute = mytp.getMinute();

这种方式的好处是后续做筛选(比如查询2024年10月的所有活动)或者日期计算会更方便,不需要再解析字符串。

最后别忘了,处理用户输入相关的转换时,一定要加上异常捕获逻辑,避免因为格式问题导致APP崩溃,同时给用户友好的错误提示哦~

内容的提问来源于stack exchange,提问作者Godymn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:23:10