我有下面的代码和我得到异常已经没有与此命令相关联的打开的DataReader,必须首先在C#中被关闭
“已经有与此连接 相关联的打开的DataReader必须是首先关闭“。
我对此项目使用Microsoft Visual C#2010 Express和Microsoft Access 2007。
namespace Database1
{
public partial class Form1 : Form
{
OleDbConnection connection;
public void connect()
{
connection = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;DataSource=|DataDirectory|\PBName1.accdb;Data Source=C:\Users\bvino_000\Downloads\PBName1.accdb");
connection.Open();
}
public void close_connection()
{
connection.Close();
}
public Form1()
{
InitializeComponent();
connect();
OleDbDataReader reader = null;
OleDbCommand command = new OleDbCommand("SELECT * from PBInfo", connection);
reader = command.ExecuteReader();
while (reader.Read())
{
listBox1.Items.Add(reader[1].ToString());
}
close_connection();
}
private void button1_Click(object sender, EventArgs e)
{
listBox2.Items.Add(listBox1.SelectedItem);
string s = "";
s = listBox1.SelectedItem.ToString();
connect();
string sql = "SELECT PBSize FROM PBInfo where PBName=" + " '" + s + "' ";
try
{
OleDbDataReader reader = null;
OleDbCommand command = new OleDbCommand(sql, connection);
reader = command.ExecuteReader(CommandBehavior.CloseConnection);
while (reader.Read())
{
command.ExecuteReader();
}
reader.Close();
command.Dispose();
close_connection();
if (connection.State != ConnectionState.Open)
{
connection.Open();
}
label2.Text = command.ExecuteReader().ToString();
listBox1.Items.Remove(listBox1.SelectedItem);
}
catch(Exception ex)
{
ex.GetBaseException();
}
finally
{
close_connection();
}
}
}}
检查此问题http://stackoverflow.com/questions/5440168/c-sharp-mysql-there-is-already-an-open-datareader-associated-with-this-connectio –
您可以调用ExecuteReader两次Button_Click事件。而下一个'label2.Text = command.ExecuteReader()。ToString()'没有意义 – Steve