So you're using code to submit to the DB server? In that case you may need code, though the recommended practice is to use a web service (such as DBXL) as an intermediary for submitting to a database. That would save you from having to keep code in the form itself.
It looks like there's at least one more mistake in your XPath. You need to change my:DisplayName to pc:DisplayName, but even if the XPath is correct, the people picker could be empty, so you should be checking for nulls.
As you've surmised, there isn't a way to put action rules on people pickers, but a way around this is to create a hidden field whose default value formula references one of the fields in the people picker. Then you can put action rules on that hidden field and they will execute when the value of the people picker changes.