예제 #1
0
        private void ChangePassword(int itemId)
        {
            DataConnection dataConn = DataViewHierarchyAccessor.Connection;
              DbConnection cnn = DataViewHierarchyAccessor.Connection.ConnectionSupport.ProviderObject as DbConnection;
              if (cnn == null) return;

              NpgsqlConnectionProperties props = new NpgsqlConnectionProperties(cnn.ConnectionString);

              using (ChangePasswordDialog dlg = new ChangePasswordDialog(props))
              {
            if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
              if (String.IsNullOrEmpty(dlg.Password))
            props.Remove("Password");
              else
            props["Password"] = dlg.Password;

              System.Reflection.MethodInfo method = cnn.GetType().GetMethod("ChangePassword", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.InvokeMethod, null, new Type[] { typeof(string) }, null);

              if (method != null)
              {
            method.Invoke(cnn, new object[] { dlg.Password });

            dataConn.Close();
            dataConn.DisplayConnectionString = props.ToDisplayString();
            dataConn.Open();

            Refresh(itemId);
              }
            }
              }
        }