【问题标题】:EOF Error, Java & Derby DatabaseEOF 错误、Java 和 Derby 数据库
【发布时间】:2015-07-11 12:15:42
【问题描述】:

您好,我正在使用 derby 数据库创建日历。我已经创建并插入到数据库中,但是在打印时;它会引发 EOF 错误。 欢迎任何建议,这是有问题的方法。

public void show() {
    try {
        ResultSet results = stm.executeQuery("select * from Users");
        while (results.next()) {
             //print result???
        }
    } catch (Exception e) {
        System.err.println(e.getMessage());
    }
}

这是堆栈跟踪:

语法错误:在第 1 行第 167 列遇到“”。 线程“主”java.lang.Error 中的异常:未解决的编译

问题: PrintStream 类型中的方法 println(boolean) 不适用于参数 (void)


这是设置

     public void populate() {
            try {
        stm.execute( "insert into Users values (User_ID, User_FirstName, User_LastName , AdminFlag, UserNamex, Passwordx"
                +                             "(12565, 'Elliot','Green','True' ,'elliot2','1234')");

--

     public void createTable() {
    try {
        stm.execute("drop table User"); // May fail
    } catch (Exception e) { e.printStack();}

    String sql1 = "create table Users ( "
            + "  User_ID          Integer,"
            + "  User_FirstName   Varchar(50),    "
            + "  User_LastName    Varchar(50), " 
            + "  AdminFlag        Boolean, "
            + "  UserNamex        Varchar(50),  "   
            + "  Passwordx        Varchar(100) )";



    try
    {
        stm.execute("drop table Users");
    } 
    catch ( Exception e ) { e.printStackTrace(); }

    try {
        System.out.println("SQL sql1");
        stm.execute(sql1);
    } catch (Exception e) { e.printStackTrace(); System.exit(-1); // Give up 
    }
}

【问题讨论】:

  • 请将这一行:System.err.println(e.getMessage()); 改成这一行:e.printStackTrace(),再次运行代码,复制相关的堆栈跟踪并编辑问题以向我们提供堆栈跟踪。
  • 现在出现编译错误,代码无法执行。
  • 你试图运行不可编译的代码——永远不要那样做。那么哪条线是有问题的线呢?你的编译器告诉你哪一行坏了?
  • 编译器告诉我有两个错误。都在 Show() 中。不知道发生了什么。
  • 所以导致编译错误的违规行仅在您的 pastebin 上。您添加到问题中的代码不包含违规行,因此任何阅读您问题的人都不会发现问题。我想你不是故意隐藏有问题的线路来误导我们吗?无论哪种方式,这都是一个问得不好的问题。 -1

标签: java sql jdbc derby


【解决方案1】:

您的 pastebin 中的违规行是这样的:

    System.err.println(e.printStackTrace());

e.printStackTrace() 是一个void 方法,因为它不返回任何内容。您不能将此方法的结果传递给System.err.println(...),因为它没有任何意义:没有可打印的内容。

你应该写

    e.printStackTrace();

改为。

【讨论】:

    猜你喜欢
    • 2012-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-14
    • 2012-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多