Extensión/complemento para formatear SQL de una manera fácil de bloquear, selecciónelo

Cuando tengo que poner cadenas SQL en el código, me gusta que sea así (ejemplo):

VB.NET
"  Select                      " + vbCrLf + _
"    Id,                       " + vbCrLf + _ 
"    Name                      " + vbCrLF + _
"  from                        " + vbCrLF + _
"    Customers                 " + vbCrLF

C#
var vbCrLf = "\r\n"; 
var SQL = 
"  Select                      " + vbCrLf + 
"    Id,                       " + vbCrLf +  
"    Name                      " + vbCrLF + 
"  from                        " + vbCrLF + 
"    Customers                 " + vbCrLF ;

De esa manera tiene algunas ventajas:

  • Dado que cada me gusta obtiene una secuencia NewLine, cuando tengo que leer SQL en un seguimiento del servidor, no tengo que volver a formatear para obtener una lectura fácil.
  • Debido a que cada línea está rodeada de espacios, no hay riesgo de que las concatenaciones de cadenas generen un SQL no válido (algo en la línea de select Id from Customerswhere Id =1)
  • Si tengo que revisarlo en una aplicación SQL separada (SSMS, IBExpert, SQLDBX, etc.), puedo bloquear la selección fácilmente.

Es algo tedioso hacerlo a mano. ¿Hay algún complemento/extensión que ya hace eso? Busqué en la configuración VS, pero no encontré algo así.

EDITAR : Todos los ejemplos están inventados. No hay código real aquí y tampoco hay necesidad de sermonearme sobre consultas parametrizadas, ya que ya las uso.

¿Qué idioma es ese? ¿Visual Basic?
En ese ejemplo sí, VB.NET. Pero podría ser C#, es solo para dar un ejemplo claro de qué tipo de formato quiero.
Me gusta la alineación vertical, pero no incluiría todos esos espacios finales en la cadena quesy, sino, más bien, en el código Eg not " Select <lots of spaces here> " + vbCrLf + _bur " Select " <lots of spaces here> + vbCrLf + _. Teóricamente, es posible que una consulta compelx resulte en una línea de entrada demasiado larga, utilizando su método. Además, por supuesto, la cadena más larga tardará infinitesimalmente más en procesarse ;-)
@Mawg si la consulta está cerca de los límites de consulta del motor db, la convertiría en un procedimiento almacenado.
Un muy buen punto (+1); es solo que esos espacios en la cadena de consulta me molestan (YMMV) :-) Pero, me gusta la alineación vertical :-)
@Mawg Podría usar un poco de MENOS espacios. Pero la intención del ejemplo es mostrar lo que necesito.
NOTARIO PÚBLICO. Resulta que soy uno de esos obsesivos que alinea el código verticalmente :-)

Respuestas (2)

También podría considerar un generador de SQL en línea. http://www.buildmystring.com construirá sus cadenas sql y tiene bastantes opciones de espaciado y formato.

Salud.

Pero, luego, debe otorgarle a ese sitio web acceso a su base de datos para que conozca el esquema. Se requiere un poco de confianza para dar el usuario y la contraseña de su base de datos a un sitio web.
@Mawg ¿Has seguido el enlace? No necesita nada de eso. El problema aquí es el FORMATO. Olvídese de conexiones, contraseñas, etc. El sitio simplemente formatea la cadena y las opciones están muy cerca de lo que pedí.
Perdón mi error. De alguna manera pensé que querías un generador de consultas :-(
No, no lo hice. Puedo crear mis consultas y tener algunos buenos creadores de consultas en las herramientas que uso a diario.
Aunque preferiría un programa local, el sitio "Build my String" se acerca mucho a lo que necesito. Entonces recibe el cheque.

Le sugiero que use ReSharper : https://www.jetbrains.com/resharper/

Con ReSharper, cuando está escribiendo cadenas, si presiona Intro, lo moverá a una nueva línea y agregará las comillas necesarias.

Dejame darte un ejemplo. Entonces, digamos que estás escribiendo:

var dbRequest = "SELECT * FROM table WHERE table.id = 1";

Si tuviera que presionar la tecla ENTER antes de 'DÓNDE', ReSharper lo formateará automáticamente de esta manera:

var dbRequest = "SELECT * FROM table " +
                "WHERE table.id = 1";

Además, le recomiendo enfáticamente que use parámetros en lugar de + vbCrLf + porque será mucho más fácil cambiar el código más adelante, si su parámetro cambia.

Y binbd esos parámetros de consulta"WHERE table.id = :table_id"
Wrt: "Además, le recomiendo enfáticamente que use parámetros en lugar de + vbCrLf + porque será mucho más fácil cambiar el código más adelante, si su parámetro cambia". No se trata de PARAMETRIZAR, se trata de FORMATO. ¿Has leído bien la pregunta? Se trata de formatear para que la lectura de los rastros del servidor sea menos laboriosa de leer.