Index: trunk/MagicSoft/Mars/msql/MSQLServer.cc
===================================================================
--- trunk/MagicSoft/Mars/msql/MSQLServer.cc	(revision 7404)
+++ trunk/MagicSoft/Mars/msql/MSQLServer.cc	(revision 7842)
@@ -540,24 +540,26 @@
 void MSQLServer::InitEnv(TEnv &env, const char *prefix)
 {
-    TString url; 
-    TString user;
-    TString pass;
-    TString db;
+    TString url  = env.GetValue("URL",      "");
+    TString db   = env.GetValue("Database", "");
+    TString user = env.GetValue("User",     "");
+    TString pass = env.GetValue("Password", "");
+
+    user = env.GetValue(Form("%s.User", db.Data()), user);
+
+    pass = env.GetValue(Form("%s.Password", user.Data()), pass);
+    pass = env.GetValue(Form("%s.%s.Password", db.Data(), user.Data()), pass);
 
     if (prefix)
     {
-        url  = env.GetValue(Form("%s.URL", prefix),      "");
-        user = env.GetValue(Form("%s.User", prefix),     "");
-        pass = env.GetValue(Form("%s.Password", prefix), "");
-        db   = env.GetValue(Form("%s.Database", prefix), "");
-    }
-    if (url.IsNull())
-        url  = env.GetValue("URL",      "");
-    if (user.IsNull())
-        user = env.GetValue("User",     "");
-    if (pass.IsNull())
-        pass = env.GetValue("Password", "");
-    if (db.IsNull())
-        db = env.GetValue("Database",   "");
+        url = env.GetValue(Form("%s.URL", prefix), url);
+        db  = env.GetValue(Form("%s.Database", prefix), db);
+
+        user = env.GetValue(Form("%s.User", prefix), user);
+        user = env.GetValue(Form("%s.%s.User", prefix, db.Data()), user);
+
+        pass = env.GetValue(Form("%s.Password", prefix), pass);
+        pass = env.GetValue(Form("%s.%s.Password", prefix, user.Data()), pass);
+        pass = env.GetValue(Form("%s.%s.%s.Password", prefix, db.Data(), user.Data()), pass);
+    }
 
     if (user.IsNull() && pass.IsNull())
