显示以下代码...给定已经有一个与此Connection关联的打开DataReader,必须先关闭它。呃请帮忙 [英] show the following code... its given There is already an open DataReader associated with this Connection which must be closed first. errer please help
本文介绍了显示以下代码...给定已经有一个与此Connection关联的打开DataReader,必须先关闭它。呃请帮忙的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
private void forselectquery()
{
MySqlConnection con = new MySqlConnection("Server=xxxxxxxxxx; UserId=xxxxxxxx; Password=xxxxxxxx; Database=xxxxxxxxx;");
con.Open();
MySqlDataAdapter da = new MySqlDataAdapter();
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
try
{
String str1 = "select * from UrlReport where URL=@URL and Title=@Title and LastVisited=@LastVisited and Date=@Date";
MySqlCommand cmd1 = new MySqlCommand(str1, con);
cmd1.Parameters.AddWithValue("@URL", dataGridView1.Rows[i].Cells[0].Value);
cmd1.Parameters.AddWithValue("@Title", dataGridView1.Rows[i].Cells[1].Value);
cmd1.Parameters.AddWithValue("@LastVisited", dataGridView1.Rows[i].Cells[2].Value);
cmd1.Parameters.AddWithValue("@Date", label3.Text);
MySqlDataReader DR1 = cmd1.ExecuteReader();
if (DR1.Read())
{
MessageBox.Show("google");
}
else
{
String str = "INSERT INTO UrlReport(Date,MacAddress,URL,Title,LastVisited,LastUpdated,Expires) VALUES (@Date,@MacAddress,@URL,@Title,@LastVisited,@LastUpdated,@Expires)";
MySqlCommand cmd = new MySqlCommand(str, con);
cmd.Parameters.AddWithValue("@Date", label3.Text);
cmd.Parameters.AddWithValue("@MacAddress", lblMacAddress.Text);
cmd.Parameters.AddWithValue("@URL", dataGridView1.Rows[i].Cells[0].Value);
cmd.Parameters.AddWithValue("@Title", dataGridView1.Rows[i].Cells[1].Value);
cmd.Parameters.AddWithValue("@LastVisited", dataGridView1.Rows[i].Cells[2].Value);
cmd.Parameters.AddWithValue("@LastUpdated", dataGridView1.Rows[i].Cells[3].Value);
cmd.Parameters.AddWithValue("@Expires", dataGridView1.Rows[i].Cells[4].Value);
da.InsertCommand = cmd;
cmd.ExecuteNonQuery();
con.Close();
}
DR1.Close();
}
catch (Exception EX)
{
MessageBox.Show("" + EX);
}
}
}
显示以下代码...给定已经有一个与此Connection关联的开放DataReader,必须先关闭它。 errer请帮助
show the following code... its given There is already an open DataReader associated with this Connection which must be closed first. errer please help
推荐答案
在执行另一个查询之前关闭 SqlDataReader
试试这个:
Close the SqlDataReader before executing another query
Try this:
private void forselectquery()
{
MySqlConnection con = new MySqlConnection("Server=xxxxxxxxxx; UserId=xxxxxxxx; Password=xxxxxxxx; Database=xxxxxxxxx;");
con.Open();
MySqlDataAdapter da = new MySqlDataAdapter();
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
try
{
String str1 = "select * from UrlReport where URL=@URL and Title=@Title and LastVisited=@LastVisited and Date=@Date";
MySqlCommand cmd1 = new MySqlCommand(str1, con);
cmd1.Parameters.AddWithValue("@URL", dataGridView1.Rows[i].Cells[0].Value);
cmd1.Parameters.AddWithValue("@Title", dataGridView1.Rows[i].Cells[1].Value);
cmd1.Parameters.AddWithValue("@LastVisited", dataGridView1.Rows[i].Cells[2].Value);
cmd1.Parameters.AddWithValue("@Date", label3.Text);
MySqlDataReader DR1 = cmd1.ExecuteReader();
if (DR1.Read())
{
MessageBox.Show("google");
DR1.Close();//close datareader<--------------------------------
}
else
{
DR1.Close();//close datareader<--------------------------------
String str = "INSERT INTO UrlReport(Date,MacAddress,URL,Title,LastVisited,LastUpdated,Expires) VALUES (@Date,@MacAddress,@URL,@Title,@LastVisited,@LastUpdated,@Expires)";
MySqlCommand cmd = new MySqlCommand(str, con);
cmd.Parameters.AddWithValue("@Date", label3.Text);
cmd.Parameters.AddWithValue("@MacAddress", lblMacAddress.Text);
cmd.Parameters.AddWithValue("@URL", dataGridView1.Rows[i].Cells[0].Value);
cmd.Parameters.AddWithValue("@Title", dataGridView1.Rows[i].Cells[1].Value);
cmd.Parameters.AddWithValue("@LastVisited", dataGridView1.Rows[i].Cells[2].Value);
cmd.Parameters.AddWithValue("@LastUpdated", dataGridView1.Rows[i].Cells[3].Value);
cmd.Parameters.AddWithValue("@Expires", dataGridView1.Rows[i].Cells[4].Value);
da.InsertCommand = cmd;
cmd.ExecuteNonQuery();
con.Close();
}
DR1.Close();
}
catch (Exception EX)
{
MessageBox.Show("" + EX);
}
}
}
Refer :已经有了-an-open-datareader-related-with-this-connectio [ ^ ]
Refer: there-is-already-an-open-datareader-associated-with-this-connectio[^]
这篇关于显示以下代码...给定已经有一个与此Connection关联的打开DataReader,必须先关闭它。呃请帮忙的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文