c# - 如何防止数据库中打开2个连接?

标签 c# mysql database insert

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

        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();

最佳答案

您可以简单地使用“正在使用”状态,它将自动创建和关闭连接

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 语句传递到函数中即可工作。

关于c# - 如何防止数据库中打开2个连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54218660/

相关文章:

php - 如何使用sql在php的选择框中显示先前选择的选择选项

sql-server - Visual Studio 2010 中数据库开发的最佳实践?

php - 上传 OpenCart 数据库后,我收到此错误消息。我做错了什么?

c# 在 windows phone 8.1 silverlight 项目中混合两个音频文件

c# - 重命名正在运行的可执行 (exe) 文件

mysql - MySQL 中查找换行符和回车符 (\r\n)

mysql - 对值进行 ASC 排序,然后根据排序表的索引获取对应的值

mysql - 为mysql数据库表设置日期

c# - TCP 服务器一次只接受来自一台 iOS 设备的消息

c# 在另一个字符串中获取一个字符串