DBの接続文字列は都度調べて書きましょう

DBの接続文字列は都度調べて書きましょう

アプリやシステムのほとんどは、
データベースを利用することで成り立っています。
つまり、開発にはDBの知識が必要不可欠ということです。
今回はその知識の中の1つである接続情報について、
環境によって結構書き方が変わるんだなぁと思った話をします。

接続情報の例

String url = "jdbc:postgresql://localhost:5432/mydb";
String user = "myuser";
String password = "mypassword";

Connection conn = DriverManager.getConnection(url, user, password);

これはJavaでPostgreSQLのデータベースに接続する例です。
この情報を元に対象のDBに接続することで、
登録や更新等の処理を行えるようにするという訳です。
URL形式ではなく構造化形式で記載できる場合もあり、
同じURL形式でも内容は環境により変わります。
接続情報は記憶では書かずに、
決められた書き方を都度調べて書くべきですね。

言語によって違う

接続文字列の書き方に違いが出る例として、
使用するプログラミング言語による違いがあります。
言語によっては構造化形式で書けるかどうかの違いや、
URL形式での書き方の違いがあるため注意しましょう。

【言語によりURL形式の書き方に違いが出る例(PostgreSQLへの接続例)】
・Java
jdbc:postgresql://localhost:5432/mydb
・Python
postgresql+psycopg2://localhost:5432/mydb
・C#
Host=localhost;Port=5432;Database=mydb;Username=user;Password=pass;
(URL形式ではなく構造化形式の接続文字列)

RDBMSによって違う

RDBMS(Relational Database Management System)は様々ありますが、
それぞれで接続情報の書き方に違いがあります。
特にOracleは内容も少し特殊なので注意しましょう。

【RDBMSによりURL形式の書き方に違いが出る例(Javaによる接続例)】
・PostgreSQL
jdbc:postgresql://localhost:5432/mydb
・MySQL
jdbc:mysql://localhost:3306/mydb
・Oracle
jdbc:oracle:thin:@localhost:1521/mydb
(mydbはデータベース名ではなくサービス名)
・SQL Server
jdbc:sqlserver://localhost:1433;databaseName=mydb;

まとめ

何となく環境によって変わるものだとは理解していましたが、
こうしてみると同じような書き方をすることもあるのですね。
比較することで見えてくることもありますので、
一歩引いて俯瞰した視点を持ってみるのも大切ですね。