如何防止2连接在数据库打开?

问题描述 投票:0回答:1

我尝试一些好的代码关于防止项目重复,但我得到的错误有关连接。我怎样才能解决这个问题?这里是我的代码。

        if(label1.Text == "" || label2.Text == "" || label3.Text == "") {
            MessageBox.Show("Please Select Data");
        } else {
            String query = "Select * from Attendance where empIn=@empIn";
            MySqlCommand cmd1 = new MySqlCommand(query, con);
            cmd1.Parameters.AddWithValue("empIn", label2.Text);
            MySqlDataReader dr = cmd1.ExecuteReader();
            if (dr.HasRows) {
                MessageBox.Show("This Person has already IN");
            } else {
                insert();
            }            
        }
    }

    public void insert()
    {
        int i;
        con.Open();
        MySqlCommand cmd = new MySqlCommand("INSERT INTO Attendance (Name,Date,empIn)VALUES(@Name,@Date,@empIn)", con);
        cmd.Parameters.Add("@Name", MySqlDbType.VarChar).Value = label3.Text;
        cmd.Parameters.Add("@Date", MySqlDbType.Date).Value = Convert.ToDateTime(label1.Text);
        cmd.Parameters.Add("@empIn", MySqlDbType.VarChar).Value = label3.Text;
        i = cmd.ExecuteNonQuery();
        if (i > 0) {
            MessageBox.Show("Data Inserted");
            label2.Text = "";
            label3.Text = "";
            label4.Text = "";

        } else {
            MessageBox.Show("Not Deleted");
        }
        con.Close();
c# mysql database insert
1个回答
0
投票

你可以简单地使用“使用”的状态,这将自动创建和关闭连接

public object getQueryScaller(string sqlQuery)
    {
        object value = null;

        using (SqlConnection conn = new SqlConnection(_connectionString))
        {
            using (SqlCommand cmd = new SqlCommand(sqlQuery, conn))
            {
                conn.Open();
                value = cmd.ExecuteScalar();
            }
        }
        return value;
    }

这会自动控制连接问题,你就没有必要照顾它。只是传递参数到函数为SQL语句,它会工作。

© www.soinside.com 2019 - 2024. All rights reserved.