El programa Dameng JAVA especifica el modo de acceso (el nombre del modo contiene caracteres especiales)

1> Pregunta:

Recientemente, encontré un problema en la migración del proyecto. La base de datos Dameng utilizada por el proyecto SpringBoot, hemos establecido una cuenta correspondiente para cada subsistema bajo la plataforma, de modo que cuando el programa en el subsistema usa esta cuenta para iniciar sesión, el valor predeterminado es Leer la tabla bajo su propio esquema (esquema), y no necesita usar 模式名.对象名la forma de acceder a ella en SQL. Recientemente, cuando se trata de la migración de la base de datos, usamos una cuenta grande en la plataforma y todos los subsistemas acceden a los datos en su propio modo a través de esta cuenta. Sin embargo, la cuenta de inicio de sesión por defecto lee el modo predeterminado de la cuenta actual, por lo que debemos especificar el modo de acceso de cada subsistema sin modificar el sql, dicha modificación es definitivamente poco práctica.

2> La solución oficial:

Documentación técnica de Dameng: https://eco.dameng.com/docs/zh-cn/faq/faq-java.html

Cuando revisé la documentación técnica de Dameng, descubrí que había una explicación oficial:

inserte la descripción de la imagen aquí

3> Problemas encontrados en el uso real:

Sin embargo, nuestro nombre de usuario contiene algunos símbolos especiales, como XXX-este, con un prefijo unificado. Cuando se construye una cadena de conexión de URL de este tipo, jdbc:dm://192.168.15.35:5236?schema=XXX-XXXsiempre se informa una excepción de conexión o un símbolo no reconocido cuando se inicia el programa [-]:
inserte la descripción de la imagen aquí

Así que cambié una biblioteca de prueba, similar a TEST2la anterior, y el programa se inició correctamente. Parece que es por los caracteres especiales. Primero, traté de usar el carácter de escape , pero todavía no lo reconocí; luego, como Dameng no lo reconoció, lo envolví entre comillas dobles %2Dcon el carácter de escape de Dameng "", y el resultado aún comencé a reportar un error, lo intenté muchas veces y consulté mucha información pero no pude encontrar una solución, sin querer pensé que era porque se ignoraron las comillas dobles, así que agregué otra capa a try, eso es todo, el resultado fue exitoso jdbc:dm://192.168.15.35:5236?schema=""XXX-XXX""También se accede a la tabla correcta. Desconozco el motivo de este escrito por el momento, y lo estudiaré en profundidad más adelante.

Resumir

① Si desea acceder a las tablas en otros modos (modo no predeterminado) después de iniciar sesión, puede usarlo schema=模式名en la cadena de conexión jdbc.

② Si el nombre del modo contiene caracteres especiales, debe envolver el nombre del modo con dos capas de comillas dobles, es decir: de schema=""模式名""esta manera.

Supongo que te gusta

Origin blog.csdn.net/backbug/article/details/125387210
Recomendado
Clasificación