Gracias a los dos por las respuestas.
En cuanto a las consultas parametrizadas, ¿bastaría con utilizar procedimientos almacenados? Utilizo un clase propia para todas las consultas a las bases de datos:
Código:
Dim con As New ConexionesBD.datosSQL
con.EjecutaNonQuery("PA_MiProcedimiento @id = " & id & ", @valor = '" & valor & "'")
Sobre lo de identificar las palabras reservadas de SQL, he visto ejemplos de inclusión de código con cadenas que no tenían ni una sola palabra, eran todo caracteres numéricos o signos de puntuación. Además tendría que depurar mucha la expresión regular para que no me filtre palabras como SELECTivo, INSERTar o incluso si se escriben textos directamente en inglés que contengan las palabras reservadas.
Un saludo.