0

我已经建立了 sql 连接,并从 excel 表中获取查询。并在建立 db cooncetion 之后,调用:

result rs= st.executeQuery(query)

语句显示错误,因为找不到存储过程。

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String querypath = "C:/Users/svhirekalmath/eclipse-workspace/NepalBITestNg/queries/queries.xlsx"; 
FileInputStream queryFile = new FileInputStream(new File(querypath));
XSSFWorkbook queryBook = new XSSFWorkbook(queryFile);
Sheet querySheet=queryBook.getSheet("Sheet1");

String query=ReusableFunctions.getPropertiesValue("COMPANY"); // fetching query 
queryBook.close(); 

Connection con = DriverManager.getConnection("jdbc:sqlserver://cdtssql879d;database=NepalBI_1","SNABI_user","SNABI@123");
Statement st = con.createStatement();
ResultSet rs = st.executeQuery(query); // getting error at this line 

错误:

FAILED: dbconnection
com.microsoft.sqlserver.jdbc.SQLServerException: Could not find stored procedure 'applicationPassword'.
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:196)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1454)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(SQLServerStatement.java:786)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement$StmtExecCmd.doExecute(SQLServerStatement.java:685)
    at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:4026)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1416)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:185)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:160)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeQuery(SQLServerStatement.java:620)
    at marketoverview.MarketOverviewTest.dbconnection(MarketOverviewTest.java:153)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)
    at org.testng.internal.Invoker.invokeMethod(Invoker.java:583)
    at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:719)
    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:989)
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
    at org.testng.TestRunner.privateRun(TestRunner.java:648)
    at org.testng.TestRunner.run(TestRunner.java:505)
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:455)
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450)
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415)
    at org.testng.SuiteRunner.run(SuiteRunner.java:364)
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84)
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1208)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1137)
    at org.testng.TestNG.runSuites(TestNG.java:1049)
    at org.testng.TestNG.run(TestNG.java:1017)
    at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:115)
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
4

1 回答 1

0

此错误消息...

FAILED: dbconnection
com.microsoft.sqlserver.jdbc.SQLServerException: Could not find stored procedure 'applicationPassword'.

...表示您的程序尝试执行查询时出现错误。

关于这条线的更多细节:

String query=ReusableFunctions.getPropertiesValue("COMPANY");

会帮助我们以更好的方式分析问题。但是,通过Selenium执行的 pl/sql 语句的标准结构如下:

String query = "select * from seleniumuser"

所以理想情况下,

String query=ReusableFunctions.getPropertiesValue("COMPANY");
System.out.println(query);

应该打印类似于:

select * from seleniumuser

此外, 的实例Connection应该包括端口号,如下所示:

Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/selenium","root","root");

您的代码试用版中似乎缺少端口号:

Connection con = DriverManager.getConnection("jdbc:sqlserver://cdtssql879d;database=NepalBI_1","SNABI_user","SNABI@123");

注意:@JimEvans 在他的评论中进一步澄清说Selenium 支持执行 SQL 查询是误导性的。它是标准的 Java 库执行,与 Selenium 完全无关

于 2019-08-12T07:42:56.793 回答