--- PreparedStatement.java.orig	Fri Feb 16 22:45:00 2001
+++ PreparedStatement.java	Tue Jul 17 15:32:09 2001
@@ -285,13 +285,22 @@
               int i;
 
               sbuf.append('\'');
-              for (i = 0 ; i < x.length() ; ++i)
-                {
-                  char c = x.charAt(i);
-                  if (c == '\\' || c == '\'')
-                    sbuf.append((char)'\\');
-                  sbuf.append(c);
-                }
+  	      for (i = 0 ; i < x.length() ; ++i)
+	      {
+		char c = x.charAt(i);
+		if (c == '\\' || c == '\'') {
+		  sbuf.append((char)'\\');
+		  sbuf.append(c);
+		}
+		else if (Character.isLetterOrDigit(c) || c == ' ' || c == ',' || c == '.' || c == '@' || c == '-' || c == '+' || c =='/' || c == '%')
+		  sbuf.append(c);
+		else {
+		  String oct = Integer.toOctalString(c);
+		  if (oct.length() == 1) sbuf.append("\\00" + oct);
+		  else if (oct.length() == 2) sbuf.append("\\0" + oct);
+		  else if (oct.length() == 3) sbuf.append("\\" + oct);
+		}
+	      }
               sbuf.append('\'');
               set(parameterIndex, sbuf.toString());
             }
