Будем благодарны за любые предложения по устранению проблемы ниже.
Я пытаюсь запустить SQL-оператор, используя Java, где у меня все время динамическое имя файла. Например, на этот раз мое полное имя файла "WTX-5010_HP_KYCMS18837P51144.txt"
Это мой оператор sql: `SELECT processid, * FROM [Config]. [AD]. [FILELOG] где filename = 'WTX-5010_HP_KYCMS18837P51144.txt'
Вот мой сценарий:
static String NewFileNmae = WTX-5010_HP_KYCMS18837P51144.txt;
System.out.println("Full New File Name is " + NewFileNmae);
try {
String strpQuery2 = "SELECT processid, * FROM [Config].[AD].[FILELOG] where filename=";
String connectionUrl = "jdbc:sqlserver://"+strpServer+":"+strpPort+";databaseName="+strpDatabase+";IntegratedSecurity=true";
// Declare the JDBC objects.
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
con = DriverManager.getConnection(connectionUrl);
String SQLS = strpQuery2+NewFileNmae;
System.out.println("SQLQuery is " + SQLS);
stmt = con.createStatement();
rs = stmt.executeQuery(SQLS);
while (rs.next()) {
ProcessID = rs.getString(1);
System.out.println("List value are " +ProcessID);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
В окне отладки я вижу, что SQL-оператор печатается как "SELECT processid, * FROM [Config].[AD].[FILELOG] where filename=WTX-5010_HP_KYCMS18837P51144.txt"
до этого момента в приведенном выше сценарии rs = stmt.executeQuery(SQLS)
;
Однако при выполнении действия F6 после `rs = stmt.executeQuery (SQLS) оно завершается неудачно и выдает следующую ошибку:
com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near '_HP_KYCMS18837P51144'.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1515)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(SQLServerStatement.java:792)
at com.microsoft.sqlserver.jdbc.SQLServerStatement$StmtExecCmd.doExecute(SQLServerStatement.java:689)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:180)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:155)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeQuery(SQLServerStatement.java:616)
at Test.TS01ClaimLoadverifyClaimLoadsuccessHCFA.verifyClaimLoadsuccessHCFA(TS01ClaimLoadverifyClaimLoadsuccessHCFA.java:180)
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:108)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:661)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:869)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1193)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
at org.testng.TestRunner.privateRun(TestRunner.java:744)
at org.testng.TestRunner.run(TestRunner.java:602)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:380)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:375)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:340)
at org.testng.SuiteRunner.run(SuiteRunner.java:289)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1301)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1226)
at org.testng.TestNG.runSuites(TestNG.java:1144)
at org.testng.TestNG.run(TestNG.java:1115)
at TestScriptRunner.Runner.runTestScriptKeywords(Runner.java:856)
at TestScriptRunner.Runner.triggerRun(Runner.java:344)
at TestScriptRunner.Runner.main(Runner.java:144)
at Test.TestScriptRun.main(TestScriptRun.java:9)
Я добавляю имя файла как переменную, где, когда динамическое имя файла генерируется автоматически, оно не приносит кавычки вместе с именем файла. Как я могу упомянуть одиночную квоту для переменной NewFileName здесь? - Строка SQLS = strpQuery2 + NewFileNmae;