为什么getColumnType不适用于数字类型?

时间:2016-11-23 19:13:48

标签: java sql jdbc

我想在java中获取我的列类型 我这样做:

    ResultSetMetaData rsmd = rs.getMetaData();
    int type = 0;

    for (int i = 0; i < rsmd.getColumnCount(); i++) {
        type = rsmd.getColumnType(i);

        if (type == Types.VARCHAR) {
            System.out.println("str");
        } else if (type == Types.INTEGER){
            System.out.println("int");
        }

    }

此代码适用于字符串,但它不适用于sql中的number类型 同样在the list of types中没有数字类型? 我该如何解决这个问题?

  

修改

Types.NUMERIC是正确答案

1 个答案:

答案 0 :(得分:1)

ResultSetMetaData列索引是从1开始的,而不是从0开始,使用switch语句。在SQL中声明为INTEGER的列返回的JDBC类型可能因您的RDBMS而异。

Dim i as Integer

For i=2 to 341
    Sheets(i).Select
    Range("A10:J10").Select
    Range("J10").Activate
    Range(Selection, Selection.End(xlDown)).Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("COMBINATION").Select
    NextFree = Range("A10:A" & Rows.Count).Cells.SpecialCells(xlCellTypeBlanks).Row
    Range("A" & NextFree).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
Next i