Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ORA-00923:在SeleniumWebDriver中预期的位置未找到FROM关键字_Java_Oracle_Selenium Webdriver - Fatal编程技术网

Java ORA-00923:在SeleniumWebDriver中预期的位置未找到FROM关键字

Java ORA-00923:在SeleniumWebDriver中预期的位置未找到FROM关键字,java,oracle,selenium-webdriver,Java,Oracle,Selenium Webdriver,我用java创建了一个类(ValidarStatusOsPage),该类连接到DB,并将查询结果返回给测试类(ValidateStatusTest)并打印到屏幕上 运行测试类时,Eclipse控制台显示以下消息: ORA-00923:FROM关键字未在expecte中找到 我已经检查了几次代码,但我无法验证错误在哪里 下面是用于连接DB和测试类的Java类 public class ValidarStatusOsTest { static String query; @Test public

我用java创建了一个类(ValidarStatusOsPage),该类连接到DB,并将查询结果返回给测试类(ValidateStatusTest)并打印到屏幕上

运行测试类时,Eclipse控制台显示以下消息:

ORA-00923:FROM关键字未在expecte中找到

我已经检查了几次代码,但我无法验证错误在哪里

下面是用于连接DB和测试类的Java类

public class ValidarStatusOsTest {

static String query;

@Test
public void validarOs() {

    ValidarStatusOsPage os = new ValidarStatusOsPage();
    query = os.returnDb("179195454");

}}


public class ValidarStatusOsPage {

String resultado;

public String returnDb(String NuOs) {
    // Connection URL Syntax: "jdbc:mysql://ipaddress:portnumber/db_name"
    String dbUrl = "jdbc:oracle:thin:@10.5.12.116:1521:desenv01";

    // Database Username
    String username = "bkofficeadm";

    // Database Password
    String password = "bkofficeadmdesenv01";

    // Query to Execute
    String query = "SELECT NU_OS, CD_ESTRATEGIA, CD_STATUS, NU_MATR, DT_ABERTURA" +
                   "FROM tb_bkoffice_os"+
                   "WHERE  NU_OS ="+ NuOs +"";

    try {
        // Load mysql jdbc driver
        Class.forName("oracle.jdbc.driver.OracleDriver");

        // Create Connection to DB
        Connection con = DriverManager.getConnection(dbUrl, username, password);

        // Create Statement Object
        Statement stmt = con.createStatement();

        // Execute the SQL Query. Store results in ResultSet
        ResultSet rs = stmt.executeQuery(query);

        // While Loop to iterate through all data and print results
        while (rs.next()) {
            String NU_OS         = rs.getString(1);
            String CD_ESTRATEGIA = rs.getString(2);
            String CD_STATUS     = rs.getString(3);
            String NU_MATR       = rs.getString(4);
            String DT_ABERTURA   = rs.getString(5);

            resultado = NU_OS + "  " + CD_ESTRATEGIA + "  " + CD_STATUS + "  " + NU_MATR + "  " + DT_ABERTURA + "\n";
            System.out.println(NU_OS + " - " + CD_ESTRATEGIA + " - " + CD_STATUS + " - " + NU_MATR + " - "+ DT_ABERTURA);

        }
        // closing DB Connection
        con.close();
    } catch (ClassNotFoundException e) {

        e.printStackTrace();

    } catch (SQLException e) {

        e.printStackTrace();

    }
    return resultado;
}}

您的查询中有3点:

SELECT NU_OS, CD_ESTRATEGIA, CD_STATUS, NU_MATR, DT_ABERTURA" +
               "FROM tb_bkoffice_os"+
               "WHERE  NU_OS ="+ NuOs +""
  • 查询的第一部分之前的空格是:
    选择NU_OS、CD_Estregia、CD_STATUS、NU_MATR、DT_ABERTURAFROM
  • 此处之前缺少空格:
    选择NU_OS、CD_Estrageia、CD_STATUS、NU_MATR、DT_ABERTURAFROM tb_bkoffice_osWHERE NU_OS=
  • 将参数连接到SQL字符串正是SQL注入攻击的切入点。永远不要在真正的程序中这样做,即使它是纯独立的。查询时始终使用参数
  • 最后一点:
    +NuOs+“
    -last”毫无意义

    祝你好运

    UPD:@YCF_L绝对正确使用准备好的语句

    您需要这样做: 在Sql字符串中:
    其中NU\u OS=?

    代码:

    PreparedStatement stmt = con.prepareStatement(query);
    
    stmt.setString(1, NuOs); 
     //also works: stmt.setObject(1,NuOs);
    
    JDBC需要记住的事情:

  • SQL中的所有参数都是?标记
  • 参数索引以1开头(不是0)
  • 按照它们在SQL中从头到尾出现的顺序
  • (例如,
    从tbl中选择*,其中col1=?和col2=?
    参数1用于col1,参数2用于col2


    另外,您的初始SQL还有一个错误,但我不想告诉您是什么:-)使用参数,一切都会好起来。

    最后请留出一些空格。在Vadim之前,您需要一个空格,避免黑客攻击的正确方法是什么。你有正确方法的例子吗?“我是编程的初学者。”Kakashi老师用