Laden...

ConnectionString ohne Passwort im Code verwenden

Erstellt von _pi vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.253 Views
Hinweis von herbivore vor 12 Jahren

Abgeteilt von Drei DatagridViews: Zugehörige Daten in die anderen DGVs laden

_
_pi Themenstarter:in
40 Beiträge seit 2008
vor 12 Jahren

Danke für Deine Antwort.
Ich hab es jetzt per Designer gemacht und alles funktioniert wie erwünscht.

Den Part den ich aber nicht verstehe, ist wie ich vorgehen muß, um den generierten ConnectionString ohne Passwort im Code zu verwenden, da ja ohne komplette Daten die Verbindung nicht hergestellt wird.
In meiner Anwendung gibt es Login Form wo das Passwort eingegeben wird,
was ist jetzt die Vorgehensweise den ConnectionString zu verwenden, bzw. Passwort hinzufügen?

        private void MainForm_Load(object sender, EventArgs e)
        {

            this.mitarbeiterTableAdapter.Fill(this._pi_devDataSet.Mitarbeiter);
            this.projekteTableAdapter.Fill(this._pi_devDataSet.Projekte);
            this.tasksTableAdapter.Fill(this._pi_devDataSet.Tasks);
            this.teamTableAdapter.Fill(this._pi_devDataSet.Team);
194 Beiträge seit 2006
vor 12 Jahren

Hallo _pi

...
Den Part den ich aber nicht verstehe, ist wie ich vorgehen muß, um den generierten ConnectionString ohne Passwort im Code zu verwenden
...

Dies ist ein anderes Thema und du solltest hierfür einen neuen Thread erstellen.

Zu deiner Frage.
Erstelle eine Klasse in der selben Assembly gemäss dem folgenden Beispiel:



using System.Data.SqlClient;
using NorthwindDataAccess.CustomersDataSetTableAdapters;

namespace NorthwindDataAccess
{
   public class CustomersTableAdapterConnectionManager
   {

      public static SqlConnection GetConnection(
         CustomersTableAdapter adapter)
      {
         return adapter.Connection;
      }

      public static void SetConnection(CustomersTableAdapter adapter,

         SqlConnection connection)
      {
         adapter.Connection = connection;
      }
   }
}

Quelle:
Data Binding with Windows Forms 2.0: Programming Smart Client Data Applications with .NET
Von Brian Noyes
...............................................
Publisher: Addison Wesley Professional

Kapitel 2: Connection Management

Gruss
Balaban_S

_
_pi Themenstarter:in
40 Beiträge seit 2008
vor 12 Jahren

Danke für Deine Antwort, ich habe aber Northwind nicht installiert, ich verwende mySQL und ich verstehe leider nicht wie ich Deinen Beispiel Code adaptieren kann.


using System.Data.SqlClient;
using NorthwindDataAccess.CustomersDataSetTableAdapters;

namespace NorthwindDataAccess
194 Beiträge seit 2006
vor 12 Jahren

Ok
angepasst:


using ByteFX.Data.MySqlClient
using DeinProjekt._pi_devDataSetTableAdapters;

namespace DeinProjekt
{
   public class mitarbeiterTableAdapterConnectionManager
   {

      public static MySqlConnection GetConnection(
         mitarbeiterTableAdapteradapter)
      {
         return adapter.Connection;
      }

      public static void SetConnection(mitarbeiterTableAdapter adapter,

         MySqlConnection connection)
      {
         adapter.Connection = connection;
      }
   }
}

Gruss

Balaban_s

_
_pi Themenstarter:in
40 Beiträge seit 2008
vor 12 Jahren

ich hab Deine Lösung adaptiert und hatte ein Problem beim Umsetzen.
Hab dann aber besser suchen können,.

Ich machs jetzt so -> Settings.Designer.cs

        public string myConnectionString {
            get {
                return ((string)(this["myConnectionString"]));
            }
            set {
                this["myConnectionString"] = value;
            }
        }

in meiner Haupt Form Load:

            Projektmanager.Properties.Settings.Default.mydevConnectionString =
                "data source=85.***.***.210;port=470;user id=" + Global.User.Username + ";password="+ Global.User.Passwort
                +";database=testDB;Keep Alive=1";
_
_pi Themenstarter:in
40 Beiträge seit 2008
vor 12 Jahren

wie kann ich denn jetzt dann connection errors behandeln?

on form load funktioniert mein ConnectionString ja jetzt.


            this.mitarbeiterTableAdapter.Fill(this.myDataSet.Mitarbeiter);
            this.tasksTableAdapter.Fill(this.myDataSet.Tasks);
            this.projekteTableAdapter.Fill(this.myDataSet.Projekte);
            this.teamTableAdapter.Fill(this.myDataSet.Team);
            this.statusTableAdapter.Fill(this.myDataSet.Status);

T
156 Beiträge seit 2010
vor 12 Jahren

wie kann ich denn jetzt dann connection errors behandeln?
on form load funktioniert mein ConnectionString ja jetzt. Du solltest das Füllen des DataSets in eine extra Methode packen, und den Aufruf der Methode dann in ein try...catch packen. Und die Methode vielleicht lieber in den Konstruktor der Form aufrufen.

//edit: obwohl die Form ja auch nicht wirklich was mit dem Laden der Daten zu tun hat....

Marko

194 Beiträge seit 2006
vor 12 Jahren

Hallo _pi

Ok ich gebe zu die quelle, die Ich verlinkt habe ist eine Ältere und bezieht sich noch auf VS2005. Mit VS2008 ist der TableAdapterManager hinzugekommen (hatte ich vollkommen vergessen), der wird per default erstellt. Somit kannst du diese Klasse erweitern ansprechen;


namespace DeinProjekt._pi_devDataSetTableAdapters
{
    public partial class TableAdapterManager
    {

        public void SetConnection(ByteFX.Data.MySqlClient con)
        {
            
            _connection = con;
            //Wenn TableAdapter vorhanden
            if (_mitarbeiterTableAdapter!= null)
            {
                _mitarbeiterTableAdapter.Connection = con;  
            }
            .
            .
            .
            
        }
    }
}


und im Konstruktor der Form


public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

var bldr = new MySqlConnectionStringBuilder ();
            bldr.DataSource = "";
            bldr.UserID = "";
            bldr.Password = "";
            bldr.Database = "";

            tableAdapterManager.SetConnection(new MySqlConnection(bldr.ConnectionString));
        }

Was du für ConnectionErrors zu erwarten hast musst du selbst wissen. Auf jeden Fall werfen die Adapter eine aussagekräftige **Exception(bzw. MySqlException) ** falls etwas nicht in Ordnung sein sollte und die kann man wie trashkid2000 schon geschrieben hat via try catch-Blöcke abfangen.

Gruss
Balaban_S