Solution 1 will work, but I believe there is an underlying problem that usually is the cause of issues like this.
You shouldn't manually have to alter your data.
I'm guessing you are building your query something like this:
var query = "INSERT .... VALUES ('" + yourValue + "');
You should be using a paramaterized query which will take care of this and the potential sql injection attack that your database will be vulnerable to:
using (OracleCommand command = new OracleCommand("INSERT .... VALUES( :Name", connection))
{
command.Parameters.Add(new OracleParameter("Name", dogName));
}