简体   繁体   English

为什么DynamicReports中没有varchar数据类型

[英]Why there is no varchar datatype in DynamicReports

I am using DynamicReports to generate a report in PDF,XLS,DOC. 我正在使用DynamicReports生成PDF,XLS,DOC格式的报告。 But my database columns are in "varchar" datatype. 但是我的数据库列是“ varchar”数据类型。 So when I am using those fields in generating DynamicReports there is every other datatype other than varchar. 因此,当我在生成DynamicReports时使用这些字段时,除varchar外,还有其他所有数据类型。 I need varchar datatype because my column consists of commas, fullstops, numbers like these. 我需要varchar数据类型,因为我的列由逗号,句号和此类数字组成。 So is there any option to convert or to get the datatype as varchar. 因此,是否有任何转换或获取数据类型为varchar的选项。

Here is my code: 这是我的代码:

public class DynamicReport {
    public static void main(String[] args) {
        Connection connection = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            connection = DriverManager.getConnection(
                        "jdbc:mysql://localhost:3306/marketing_database","root","root");
        } catch (SQLException e) {
            e.printStackTrace();
            return;
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
            return;
        }

        JasperReportBuilder report = DynamicReports.report();//a new report
        StyleBuilder plainStyle = stl.style().setFontName("FreeUniversal");

        StyleBuilder boldStyle = stl.style(plainStyle).bold().setBorder(stl.pen1Point());

        report
          .columns(
              Columns.column("Contact Person", "Contact_Person", DataTypes.stringType()))
          .title(//title of the report
                  Templates.createTitleComponent("Fonts"),
              Components.text("FreeUniversal").setStyle(boldStyle)
              .setHorizontalAlignment(HorizontalAlignment.CENTER))
              .pageFooter(Components.pageXofY())//show page number on the page footer
              .setDataSource("SELECT Contact_Person FROM marketing_database.lead", 
                                      connection);

        try {
            report.show();
            report.toPdf(new FileOutputStream("c:/report.pdf"));
        } catch (DRException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
      }
}

Any help in this will be appreciated 任何帮助,将不胜感激

Since Dynamic Reports is based on Java, you can use the String data type for VARCHAR db types, as @AlexK and @KarthikeyanVaithilingam suggested. 由于Dynamic Reports基于Java,因此可以将String数据类型用于VARCHAR db类型,如@AlexK和@KarthikeyanVaithilingam所建议。

CHAR , VARCHAR , and LONGVARCHAR could have been mapped to either String or char[] , but String is more appropriate for normal use. CHARVARCHARLONGVARCHAR映射到Stringchar[] ,但是String更适合正常使用。 Also, the String class makes conversions between String and char[] easy: There is a method for converting a String object to a char[] and also a constructor for turning a char[] into a String object. 另外, String类使在Stringchar[]之间进行转换变得容易:有一种将String对象转换为char[] ,还有一种将char[]转换为String对象的构造函数。

Source 资源

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM