java - DANS DBF 数字类型用法

标签 java database dbf

需要创建 dbf 文件,为此我使用 dans-dbf-lib-1.0.0-beta-10.jar。尝试插入数字字段时:

final Map<String, Value> map = new HashMap<String, Value>();
map.put("NM", new StringValue("RST014"));
map.put("SOURCE", new StringValue("NKK"));
map.put("ST", new StringValue("WT"));
map.put("JE_BANK", new StringValue("MP"));
map.put("JE_LANG", new StringValue("RU"));
map.put("LIMIT", new NumberValue(1000));
Record record = new Record(map);
dbfTable.addRecord(record);

在下面的代码之后我有一个异常(exception)

dbflib.ValueTooLargeException: Number does not fit in the field 'LIMIT': 1000.

我该如何解决这个问题?

最佳答案

问题通过以下代码简单地解决了:

private static final String[] COLUMN_NAMES = new String[] {
        "NM", "SOURCE", "ST", "DATE_S", "DATE_E",
        "ID", "LDAP", "JE_BANK", "JE_LANG", "INFCL",
        "LIMIT", "REFCON", "CLSIGN", "COUNT", "COMM",
        "ATTR5", "ATTR20", "ATTR21", "ATTR26", "ATTR27", "ATTR28",
        "F", "I", "O", "Tel", "Product", "Kod_text", "Product_new", "Email"
    };

private static final Type[] COLUMN_TYPES = new Type[] {
    Type.CHAR, Type.CHAR, Type.CHAR, Type.CHAR, Type.CHAR,
    Type.NUMBER, Type.CHAR, Type.CHAR, Type.CHAR, Type.CHAR,
    Type.NUMBER, Type.CHAR, Type.CHAR, Type.CHAR, Type.CHAR,
    Type.CHAR, Type.CHAR, Type.NUMBER, Type.CHAR, Type.CHAR, Type.CHAR,
    Type.CHAR, Type.CHAR, Type.CHAR, Type.CHAR, Type.CHAR, Type.NUMBER, Type.CHAR, Type.CHAR
};

private static final int[] COLUMN_PRECISION = new int[] {
        6, 3, 2, 10, 10,
        10, 1, 2, 2, 18,
        10, 75, 3, 1, 1, 
        10, 1, 1, 4, 1, 17,
        254,254,254,12,254,20,254,254
    };

    for (int i = 0; i < COLUMN_NAMES.length; i++)
    {
        if (COLUMN_TYPES[i].equals(Type.CHAR))
        {
            dbfFields.add(new Field(COLUMN_NAMES[i], Type.CHARACTER, COLUMN_PRECISION[i] ));
        }
        else
        {
            Field f = new Field(COLUMN_NAMES[i], Type.NUMBER, COLUMN_PRECISION[i],0);
            dbfFields.add(f);
        }
    }

关于java - DANS DBF 数字类型用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30596085/

相关文章:

java - 简单统计 - 用于计算平均值、标准差等的 Java 包

java - 为什么 Apache poi 的 Workbook.close() 方法将内容写入输入文件?

java - 使用 Java 使用 BouncyCaSTLe 生成 X509Certificate

php - 我的 MySQL 数据库表上的这个外键会为我做什么?

c# - 尝试连接到 Access 数据库表以检索数据,但遇到困难

python - 在 python 中使用 dbf 库读取更改

language-agnostic - 如何以不支持 utf-8 的格式存储 unicode 数据

java - Maven 包时 Amazon Device Farm 的未知生命周期阶段 "–-DskipTests=true"

php - 当我尝试获取两个日期之间的间隔时出现 mysql_query 错误

JAVA Dans DBF Library,从DBF文件中获取数据,byte[]转int