Différents serveurs de base de données utilisent différentes méthodes pour citer et échapper des identifiants.Comment citer/échapper des identifiants tels que les noms de colonnes avec JDBC?
E.g. "foo bar" vs "foo bar" vs [foo bar], ou "10" "" vs "10 \" ", ou des identifiants tels que FooBar ou tableau doivent être indiqués pour certaines bases de données mais pas pour d'autres ..
Y a-t-il une méthode API qui exécute correctement les citations/échappements pour une connexion de base de données donnée?
Bon point sur les noms de bases de données neutres, mais des surprises peut toujours apparaître (par exemple, un certain identifiant peut ne pas être acceptable dans une autre base de données). Aussi, que se passe-t-il si j'écris réellement un ORM? Cela nécessiterait-il une implémentation séparée de citation/échappement codée à la main pour chaque base de données prise en charge? – aditsu
Respectez les règles de dénomination des identifiants dans le standard SQL. Ceux-ci fonctionneront n'importe où. –
@PaulTomblin Heh, oui, le "standard". Il y a beaucoup de flexibilité dans la spécification - et les fournisseurs ajoutent leurs propres mots-clés et mots réservés, qui doivent être cités si l'application doit les utiliser. Je suis d'accord qu'essayer de coller à la spécification est l'option la moins douloureuse, mais il * aspire * que JDBC n'expose pas un 'java.sql.Connection.quoteIdentifier (...)' ou un DatabaseMetaData.quoteIdentifier (...) 'méthode et sauvegarde SPI, car cela signifie que vous faites toujours la danse de mots réservés. 'getIdentifierQuoteString' ne fait pas le travail, il n'exprime pas les règles de soumission. –