C#MySql类//连接打开和关闭

时间:2011-07-18 10:09:22

标签: c# mysql database-connection

我遇到了问题。我堆叠! 不知道我是否需要新课程! 我想要一个通过按钮点击关闭连接的方法。

我已经创建了构造函数:

   public string Server;
   public string Username;
   public string Pwd;
   public string DB;


   MySqlConnection conn;
   string ConnString;

   public DBVerb(string eServer, string eUsername, string ePwd, string eDB)
   {
       this.Server = eServer;
       this.Username = eUsername;
       this.Pwd = ePwd;
       this.DB = eDB;

   }

这两种方法:

        public void Connect(System.Windows.Forms.Label lblStatus)
    {
        try
        {                 
            ConnString = String.Format("server={0};user id={1}; password={2}; database={3}; pooling=false",
                                               this.Server, this.Username, this.Pwd, this.DB);
            conn = new MySqlConnection();
            conn.ConnectionString = ConnString;

            if (conn != null)
                conn.Close();


            conn.Open();
            if (conn.State == ConnectionState.Open)
            {
                lblStatus.Text = String.Format("Verbindung zu {0} user: {1} Zeit: {2}", this.Server, this.Username, DateTime.Now.ToString());
            }
            else
            {
                MessageBox.Show("Felher");
            }


        }
        catch (Exception Ex)
        {
            MessageBox.Show(Ex.Message, "Fehler:", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }

    }
    public void ClConnect()
    {
        conn = new MySqlConnection();
        if (conn.State == ConnectionState.Open)
        {
            conn.Close();
        }
    }

我在这里打电话给Methode:

       private void cmdHerstellen_Click(object sender, EventArgs e)
    {
        string lServer = txtBServ.Text;
        string lUID = txtBUid.Text;
        string lPawd = txtBPass.Text;
        string lDB = txtBDat.Text;


        DBVerb VerbindungHerstellen = new DBVerb(lServer, lUID, lPawd, lDB);
        VerbindungHerstellen.Err();
        VerbindungHerstellen.Connect(lblStatus);



    }

    private void cmdAbbr_Click(object sender, EventArgs e)
    {


    }

如果我调用Method ClConnect()而不是我必须为参数提供参数,但我已经这样做了,所以它不起作用。

知道该怎么做吗?

1 个答案:

答案 0 :(得分:1)

您将dbconnection存储为类中的字段。如果要关闭它,则不希望使用conn = new MySqlConnection();为其分配新的连接对象,而只是想删除该行并将其替换为检查conn是否为null。如果它为null则不需要做任何工作(或者可能是它的错误),如果它不为null,那么你可以检查它是否打开并在适当的时候关闭。

您可能还需要注意在connect方法中创建新对象的位置。如果conn已经存在,您可能不希望(或需要)创建新的连接对象。

我的最后一条评论是,用户需要点击按钮才能关闭连接,这听起来有些不对劲。这应该是代码担心的问题,而不是用户。但是,我显然不知道你在做什么,所以我不能说它肯定是错的,只是感觉有点不对劲。 :)