⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sqlfile.java

📁 hsql是很有名的嵌入式数据库
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
        curConn    = conn;        curLinenum = -1;        String  inputLine;        String  trimmedCommand;        String  trimmedInput;        String  deTerminated;        boolean inComment = false;    // Globbling up a comment        int     postCommentIndex;        boolean gracefulExit = false;        continueOnError = (coeOverride == null) ? interactive                                                : coeOverride.booleanValue();        if (userVars != null && userVars.size() > 0) {            plMode = true;        }        String specifiedCharSet = System.getProperty("sqlfile.charset");        charset = ((specifiedCharSet == null) ? DEFAULT_CHARSET                                              : specifiedCharSet);        try {            br = new BufferedReader(new InputStreamReader((file == null)                    ? System.in                    : new FileInputStream(file), charset));            curLinenum = 0;            if (interactive) {                stdprintln(BANNER);            }            while (true) {                if (interactive) {                    psStd.print((stringBuffer.length() == 0)                                ? (chunking ? chunkPrompt                                            : primaryPrompt)                                : contPrompt);                }                inputLine = br.readLine();                if (inputLine == null) {                    /*                     * This is because interactive EOD on some OSes doesn't                     * send a line-break, resulting in no linebreak at all                     * after the SqlFile prompt or whatever happens to be                     * on their screen.                     */                    if (interactive) {                        psStd.println();                    }                    break;                }                curLinenum++;                if (chunking) {                    if (inputLine.equals(".")) {                        chunking = false;                        setBuf(stringBuffer.toString());                        stringBuffer.setLength(0);                        if (interactive) {                            stdprintln("Raw SQL chunk moved into buffer.  "                                       + "Run \":;\" to execute the chunk.");                        }                    } else {                        if (stringBuffer.length() > 0) {                            stringBuffer.append('\n');                        }                        stringBuffer.append(inputLine);                    }                    continue;                }                if (inComment) {                    postCommentIndex = inputLine.indexOf("*/") + 2;                    if (postCommentIndex > 1) {                        // I see no reason to leave comments in history.                        inputLine = inputLine.substring(postCommentIndex);                        // Empty the buffer.  The non-comment remainder of                        // this line is either the beginning of a new SQL                        // or Special command, or an empty line.                        stringBuffer.setLength(0);                        inComment = false;                    } else {                        // Just completely ignore the input line.                        continue;                    }                }                trimmedInput = inputLine.trim();                try {                    // This is the try for SQLException.  SQLExceptions are                    // normally thrown below in Statement processing, but                    // could be called up above if a Special processing                    // executes a SQL command from history.                    if (stringBuffer.length() == 0) {                        if (trimmedInput.startsWith("/*")) {                            postCommentIndex = trimmedInput.indexOf("*/", 2)                                               + 2;                            if (postCommentIndex > 1) {                                // I see no reason to leave comments in                                // history.                                inputLine = inputLine.substring(                                    postCommentIndex + inputLine.length()                                    - trimmedInput.length());                                trimmedInput = inputLine.trim();                            } else {                                // Just so we get continuation lines:                                stringBuffer.append("COMMENT");                                inComment = true;                                continue;                            }                        }                        // This is just to filter out useless newlines at                        // beginning of commands.                        if (trimmedInput.length() == 0) {                            continue;                        }                        if (trimmedInput.charAt(0) == '*'                                && (trimmedInput.length() < 2                                    || trimmedInput.charAt(1) != '{')) {                            try {                                processPL((trimmedInput.length() == 1) ? ""                                                                       : trimmedInput                                                                       .substring(1)                                                                       .trim());                            } catch (BadSpecial bs) {                                errprintln("Error at '"                                           + ((file == null) ? "stdin"                                                             : file.toString()) + "' line "                                                             + curLinenum                                                             + ":\n\""                                                             + inputLine                                                             + "\"\n"                                                             + bs.getMessage());                                if (!continueOnError) {                                    throw new SqlToolError(bs);                                }                            }                            continue;                        }                        if (trimmedInput.charAt(0) == '\\') {                            try {                                processSpecial(trimmedInput.substring(1));                            } catch (BadSpecial bs) {                                errprintln("Error at '"                                           + ((file == null) ? "stdin"                                                             : file.toString()) + "' line "                                                             + curLinenum                                                             + ":\n\""                                                             + inputLine                                                             + "\"\n"                                                             + bs.getMessage());                                if (!continueOnError) {                                    throw new SqlToolError(bs);                                }                            }                            continue;                        }                        if (trimmedInput.charAt(0) == ':'                                && (interactive                                    || (trimmedInput.charAt(1) == ';'))) {                            try {                                processBuffer(trimmedInput.substring(1));                            } catch (BadSpecial bs) {                                errprintln("Error at '"                                           + ((file == null) ? "stdin"                                                             : file.toString()) + "' line "                                                             + curLinenum                                                             + ":\n\""                                                             + inputLine                                                             + "\"\n"                                                             + bs.getMessage());                                if (!continueOnError) {                                    throw new SqlToolError(bs);                                }                            }                            continue;                        }                        String ucased = trimmedInput.toUpperCase();                        if (ucased.startsWith("DECLARE")                                || ucased.startsWith("BEGIN")) {                            chunking = true;                            stringBuffer.append(inputLine);                            if (interactive) {                                stdprintln(                                    "Enter RAW SQL.  No \\, :, * commands.  "                                    + "End with a line containing only \".\":");                            }                            continue;                        }                    }                    if (trimmedInput.length() == 0) {                        // Blank lines delimit commands ONLY IN INTERACTIVE                        // MODE!                        if (interactive &&!inComment) {                            setBuf(stringBuffer.toString());                            stringBuffer.setLength(0);                            stdprintln("Current input moved into buffer.");                        }                        continue;                    }                    deTerminated = deTerminated(inputLine);                    // A null terminal line (i.e., /\s*;\s*$/) is never useful.                    if (!trimmedInput.equals(";")) {                        if (stringBuffer.length() > 0) {                            stringBuffer.append('\n');                        }                        stringBuffer.append((deTerminated == null) ? inputLine                                                                   : deTerminated);                    }                    if (deTerminated == null) {                        continue;                    }                    // If we reach here, then stringBuffer contains a complete                    // SQL command.                    curCommand     = stringBuffer.toString();                    trimmedCommand = curCommand.trim();                    if (trimmedCommand.length() == 0) {                        throw new SQLException("Empty SQL Statement");                    }                    setBuf(curCommand);                    processSQL();                } catch (SQLException se) {                    errprintln("SQL Error at '" + ((file == null) ? "stdin"                                                                  : file.toString()) + "' line "                                                                  + curLinenum                                                                      + ":\n\""                                                                          + curCommand                                                                              + "\"\n"                                                                                  + se                                                                                  .getMessage());                    if (!continueOnError) {                        throw se;                    }                } catch (BreakException be) {                    String msg = be.getMessage();                    if ((!recursed) && (msg != null &&!msg.equals("file"))) {                        errprintln("Unsatisfied break statement"                                   + ((msg == null) ? ""                                                    : (" (type " + msg                                                       + ')')) + '.');                    } else {                        gracefulExit = true;                    }                    if (recursed ||!continueOnError) {                        throw be;                    }                } catch (ContinueException ce) {                    String msg = ce.getMessage();                    if (!recursed) {                        errprintln("Unsatisfied continue statement"                                   + ((msg == null) ? ""                                                    : (" (type " + msg                                                       + ')')) + '.');                    } else {                        gracefulExit = true;                    }                    if (recursed ||!continueOnError) {                        throw ce;                    }                } catch (QuitNow qn) {                    throw qn;                } catch (SqlToolError ste) {                    if (!continueOnError) {                        throw ste;                    }                }                stringBuffer.setLength(0);            }            if (inComment || stringBuffer.length() != 0) {                errprintln("Unterminated input:  [" + stringBuffer + ']');                throw new SqlToolError("Unterminated input:  ["                                       + stringBuffer + ']');            }            gracefulExit = true;        } catch (QuitNow qn) {            gracefulExit = qn.getMessage() == null;            if ((!recursed) &&!gracefulExit) {                errprintln("Aborting: " + qn.getMessage());            }            if (recursed ||!gracefulExit) {                throw qn;            }            return;        } finally {            closeQueryOutputStream();            if (fetchingVar != null) {                errprintln("PL variable setting incomplete:  " + fetchingVar);                gracefulExit = false;            }            if (br != null) {                br.close();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -