# How to Update/Modify an existing row in a db Table, using a component's actionPerformed Script?

**URL:** <https://forum.inductiveautomation.com/t/how-to-update-modify-an-existing-row-in-a-db-table-using-a-components-actionperformed-script/21779>\
**Category:** Ignition\
**Tags:** scripting, database, ignition79\
**Created:** [January 9, 2019, 10:51pm UTC](https://forum.inductiveautomation.com/t/how-to-update-modify-an-existing-row-in-a-db-table-using-a-components-actionperformed-script/21779 "2019-01-09T22:51:37Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![paulm1](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paulm1/32/5900_2.png) [@paulm1](https://forum.inductiveautomation.com/u/paulm1)\
**Post date:** [January 9, 2019, 10:51pm UTC](https://forum.inductiveautomation.com/t/how-to-update-modify-an-existing-row-in-a-db-table-using-a-components-actionperformed-script/21779/1 "2019-01-09T22:51:37Z")

</div>

[https://docs.inductiveautomation.com/display/DOC79/system.db.runPrepUpdate](https://docs.inductiveautomation.com/display/DOC79/system.db.runPrepUpdate)

I use the following script within a components actionPerformed script area and it works great for Inserting/adding a new row into an existing db table.

```
system.db.runPrepUpdate(INSERT INTO table(t_stamp, name.....)

```

Now I would like to use a actionperformed script to Update an existing row within an existing table.  
Where do I start? Help.

---

<div class="post-metadata">

**Author:** ![paulm1](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paulm1/32/5900_2.png) [@paulm1](https://forum.inductiveautomation.com/u/paulm1)\
**Post date:** [January 10, 2019, 1:18am UTC](https://forum.inductiveautomation.com/t/how-to-update-modify-an-existing-row-in-a-db-table-using-a-components-actionperformed-script/21779/2 "2019-01-10T01:18:01Z")

</div>

```
#Variables Defined
queryValue = '0'
keyValue1 = event.source.parent.ndx

#Update Query
system.db.runUpdateQuery("UPDATE flavor SET draft = %s WHERE ndx = '%f'" % (queryValue, keyValue1), 'quality')
```

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [January 10, 2019, 1:48pm UTC](https://forum.inductiveautomation.com/t/how-to-update-modify-an-existing-row-in-a-db-table-using-a-components-actionperformed-script/21779/3 "2019-01-10T13:48:43Z")

</div>

You really should use prepared statements to pass parameters. Like so:

```auto
system.db.runPrepUpdate("UPDATE flavor SET draft = ? WHERE ndx = ?", [queryValue, keyValue1], 'quality')

```

Even better would be to convert it to a named query.

---

<div class="post-metadata">

**Author:** ![paulm1](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paulm1/32/5900_2.png) [@paulm1](https://forum.inductiveautomation.com/u/paulm1)\
**Post date:** [January 10, 2019, 2:41pm UTC](https://forum.inductiveautomation.com/t/how-to-update-modify-an-existing-row-in-a-db-table-using-a-components-actionperformed-script/21779/4 "2019-01-10T14:41:32Z")

</div>

I’m learning this as I go, What would a named query look like?  
Your solution is a prepared statement, what terms would you use to describe my solution?

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [January 10, 2019, 3:25pm UTC](https://forum.inductiveautomation.com/t/how-to-update-modify-an-existing-row-in-a-db-table-using-a-components-actionperformed-script/21779/5 "2019-01-10T15:25:48Z")

</div>

> [@paulm1](#):
>
> What would a named query look like?

Start [here](https://docs.inductiveautomation.com/display/DOC79/Named+Queries). Then use [system.db.runNamedQuery](https://docs.inductiveautomation.com/display/DOC79/system.db.runNamedQuery)().

> [@paulm1](#):
>
> what terms would you use to describe my solution?

Well, I can't use the appropriate words on a family-friendly website. /-:  
Generically, it is a query produced from manual string substitution. Anything in your substitutions that could be interpreted by your DB as a delimiter will break it. And if those substitutions are supplied by a user, it is a security hazard known as SQL injection.

---

<div class="post-metadata">

**Author:** ![paulm1](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paulm1/32/5900_2.png) [@paulm1](https://forum.inductiveautomation.com/u/paulm1)\
**Post date:** [January 10, 2019, 3:33pm UTC](https://forum.inductiveautomation.com/t/how-to-update-modify-an-existing-row-in-a-db-table-using-a-components-actionperformed-script/21779/6 "2019-01-10T15:33:02Z")

</div>

I appreciate your help, Thank you.
