Java ORA-00923:在SeleniumWebDriver中预期的位置未找到FROM关键字
我用java创建了一个类(ValidarStatusOsPage),该类连接到DB,并将查询结果返回给测试类(ValidateStatusTest)并打印到屏幕上 运行测试类时,Eclipse控制台显示以下消息: ORA-00923:FROM关键字未在expecte中找到 我已经检查了几次代码,但我无法验证错误在哪里 下面是用于连接DB和测试类的Java类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
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=
+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需要记住的事情:
从tbl中选择*,其中col1=?和col2=?
参数1用于col1,参数2用于col2
另外,您的初始SQL还有一个错误,但我不想告诉您是什么:-)使用参数,一切都会好起来。最后请留出一些空格。在Vadim之前,您需要一个空格,避免黑客攻击的正确方法是什么。你有正确方法的例子吗?“我是编程的初学者。”Kakashi老师用