Insert Statement in Katalon Studio using Dynamic Values

Hello Team,

I am facing an issue, I have a requirement to save some information into database which is generated during test case execution.

I have built a statement something like this but I am gettin SQL Syntax error

insertquery = WebUI.concatenate(((['INSERT INTO User_Accounts VALUES (', ('\'' + useremail) + ('\'' + phone_number_user) + '\'', ',\'DEV_US\')']) as String[]))

useremail and phone_number_user are variables which basically carries dynamic value. The email address is something like this testest+7474748799944@Gmail.com and phone number is like 3138881234

I am getting below error

- 12: com.katalon.plugin.keyword.connection.DatabaseKeywords.executeUpdate(saveemail, insertquery)
java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '7181121439','DEV_US')' at line 1
2021-06-08 17:02:15.603 INFO  k.k.c.m.CustomKeywordDelegatingMetaClass - com.katalon.plugin.keyword.connection.DatabaseKeywords.executeUpdate is PASSED
2021-06-08 17:02:15.603 DEBUG t.1_SKU_Quantity_1_Paid_Using_Afterpay   - 13: com.katalon.plugin.keyword.connection.DatabaseKeywords.closeConnection(saveemail)
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)
	at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
	at com.mysql.cj.jdbc.StatementImpl.executeUpdateInternal(StatementImpl.java:1333)
	at com.mysql.cj.jdbc.StatementImpl.executeLargeUpdate(StatementImpl.java:2106)
	at com.mysql.cj.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1243)
	at java_sql_Statement$executeUpdate$0.call(Unknown Source)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:128)
	at com.katalon.plugin.keyword.connection.DatabaseKeywords.executeUpdate(DatabaseKeywords.groovy:87)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:98)
	at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1225)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1034)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:822)
	at groovy.lang.DelegatingMetaClass.invokeMethod(DelegatingMetaClass.java:144)
	at com.katalon.plugin.keyword.connection.DatabaseKeywords.invokeMethod(DatabaseKeywords.groovy)
	at com.kms.katalon.core.main.CustomKeywordDelegatingMetaClass.invokeStaticMethod(CustomKeywordDelegatingMetaClass.java:50)
	at org.codehaus.groovy.runtime.callsite.StaticMetaClassSite.call(StaticMetaClassSite.java:52)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:136)
	at Script1622224514133.run(Script1622224514133.groovy:281)
	at com.kms.katalon.core.main.ScriptEngine.run(ScriptEngine.java:194)
	at com.kms.katalon.core.main.ScriptEngine.runScriptAsRawText(ScriptEngine.java:119)
	at com.kms.katalon.core.main.TestCaseExecutor.runScript(TestCaseExecutor.java:398)
	at com.kms.katalon.core.main.TestCaseExecutor.doExecute(TestCaseExecutor.java:389)
	at com.kms.katalon.core.main.TestCaseExecutor.processExecutionPhase(TestCaseExecutor.java:368)
	at com.kms.katalon.core.main.TestCaseExecutor.accessMainPhase(TestCaseExecutor.java:360)
	at com.kms.katalon.core.main.TestCaseExecutor.execute(TestCaseExecutor.java:255)
	at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:114)
	at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:105)
	at com.kms.katalon.core.main.TestCaseMain$runTestCase$0.call(Unknown Source)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:152)
	at TempTestCase1623196803219.run(TempTestCase1623196803219.groovy:25)
	at groovy.lang.GroovyShell.runScriptOrMainOrTestOrRunnable(GroovyShell.java:263)
	at groovy.lang.GroovyShell.run(GroovyShell.java:507)
	at groovy.lang.GroovyShell.run(GroovyShell.java:496)
	at groovy.ui.GroovyMain.processOnce(GroovyMain.java:597)
	at groovy.ui.GroovyMain.run(GroovyMain.java:329)
	at groovy.ui.GroovyMain.process(GroovyMain.java:315)
	at groovy.ui.GroovyMain.processArgs(GroovyMain.java:134)
	at groovy.ui.GroovyMain.main(GroovyMain.java:114)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.codehaus.groovy.tools.GroovyStarter.rootLoader(GroovyStarter.java:116)
	at org.codehaus.groovy.tools.GroovyStarter.main(GroovyStarter.java:138)
2021-06-08 17:02:15.681 INFO  k.k.c.m.CustomKeywordDelegatingMetaClass - com.katalon.plugin.keyword.connection.DatabaseKeywords.closeConnection is PASSED

try to use groovy string instead:

insertquery = "INSERT INTO User_Accounts VALUES ('${useremail}', '${phone_number_user}', 'DEV_US')"

@Andrej_Podhajsky Thanks it worked

1 Like