【发布时间】:2019-01-16 13:57:11
【问题描述】:
我尝试了一些关于防止条目重复的好代码,但我收到了关于连接的错误。我怎样才能解决这个问题?这是我的代码。
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();
【问题讨论】:
-
一些程序员通过将数据库连接层实现为单例类或使用连接到数据库的ORM框架来解决这个问题。
-
你遇到了什么错误?
-
是不是因为你在这两种方法中都有一个
con.Open()。而是将con设为类属性并在所有方法中使用相同的属性 -
Chetan Ranpariya System.InvalidOperationException: '连接必须有效且打开。'但是当我在查询之上打开时,他说连接已经打开
-
@RiggsFolly 所以查询选择我也会做方法?