我遇到了问题。我堆叠! 不知道我是否需要新课程! 我想要一个通过按钮点击关闭连接的方法。
我已经创建了构造函数:
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()而不是我必须为参数提供参数,但我已经这样做了,所以它不起作用。
知道该怎么做吗?
答案 0 :(得分:1)
您将dbconnection存储为类中的字段。如果要关闭它,则不希望使用conn = new MySqlConnection();
为其分配新的连接对象,而只是想删除该行并将其替换为检查conn是否为null。如果它为null则不需要做任何工作(或者可能是它的错误),如果它不为null,那么你可以检查它是否打开并在适当的时候关闭。
您可能还需要注意在connect方法中创建新对象的位置。如果conn已经存在,您可能不希望(或需要)创建新的连接对象。
我的最后一条评论是,用户需要点击按钮才能关闭连接,这听起来有些不对劲。这应该是代码担心的问题,而不是用户。但是,我显然不知道你在做什么,所以我不能说它肯定是错的,只是感觉有点不对劲。 :)