在程序中加入oleDbDataAdapter(oleDBA),两个DataGridView(DGVList);oleDbConnection(oleDBC);然后执行:
如下两个查询是正确的,如果把两个查询换成ExecuteReader()就报一个错误:当前command已经存在一个打开了DataReader必须先关闭才能再次查询;
(第一个查询用于检索所有的记录,第二个用于按用户输入条件检索)请问如何改正?谢谢{
string path=Directory.GetCurrentDirectory().ToString()+@"\";
string DBFile = "test.mdb";
this.OLEDBC.Close();
this.OLEDBC.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + DBFile; try
{
this.OLEDBC.Open();
this.oleDBA.SelectCommand.Connection = this.OLEDBC;
this.oleDBA.SelectCommand.CommandText = @"select autoid as 序号,name as 姓名,sex as 性别, as 分数 " +
@"from temp order by desc";
this.oleDBA.SelectCommand.ExecuteNonQuery();
DataTable dt = new DataTable();
this.oleDBA.Fill(dt);
this.DGVAllList.DataSource = dt;
}
catch(Exception eMessage)
{
}
finally
{
this.OLEDBC.Close();
}
try
{
this.OLEDBC.Open();
this.oleDBA.SelectCommand.Connection = this.OLEDBC;
String Querystr = @"select autoid as 序号,name as 姓名,sex as 性别, as 分数 " +
@"from temp where(name like @name)and(sex=@sex)and(>=@) ";
this.oleDBA.SelectCommand.CommandText = Querystr;
int = 0;
try
{
= int.Parse(textBoxMark.Text);
}
catch (Exception eMessage)
{
= 0;
}
this.oleDBA.SelectCommand.Parameters.Clear();
this.oleDBA.SelectCommand.Parameters.AddWithValue("@name", "%" + this.textBoxName.Text + "%");
this.oleDBA.SelectCommand.Parameters.AddWithValue("@sex", this.comboxSex.Text);
this.oleDBA.SelectCommand.Parameters.AddWithValue("@", );
this.oleDBA.SelectCommand.ExecuteNonQuery();
DataTable dt = new DataTable();
this.oleDBA.Fill(dt);
this.DGVSelect.DataSource = dt;
}
catch (Exception eMessage)
{
MessageBox.Show(eMessage.ToString());
}
finally
{
this.OLEDBC.Close();
}
}
如下两个查询是正确的,如果把两个查询换成ExecuteReader()就报一个错误:当前command已经存在一个打开了DataReader必须先关闭才能再次查询;
(第一个查询用于检索所有的记录,第二个用于按用户输入条件检索)请问如何改正?谢谢{
string path=Directory.GetCurrentDirectory().ToString()+@"\";
string DBFile = "test.mdb";
this.OLEDBC.Close();
this.OLEDBC.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + DBFile; try
{
this.OLEDBC.Open();
this.oleDBA.SelectCommand.Connection = this.OLEDBC;
this.oleDBA.SelectCommand.CommandText = @"select autoid as 序号,name as 姓名,sex as 性别, as 分数 " +
@"from temp order by desc";
this.oleDBA.SelectCommand.ExecuteNonQuery();
DataTable dt = new DataTable();
this.oleDBA.Fill(dt);
this.DGVAllList.DataSource = dt;
}
catch(Exception eMessage)
{
}
finally
{
this.OLEDBC.Close();
}
try
{
this.OLEDBC.Open();
this.oleDBA.SelectCommand.Connection = this.OLEDBC;
String Querystr = @"select autoid as 序号,name as 姓名,sex as 性别, as 分数 " +
@"from temp where(name like @name)and(sex=@sex)and(>=@) ";
this.oleDBA.SelectCommand.CommandText = Querystr;
int = 0;
try
{
= int.Parse(textBoxMark.Text);
}
catch (Exception eMessage)
{
= 0;
}
this.oleDBA.SelectCommand.Parameters.Clear();
this.oleDBA.SelectCommand.Parameters.AddWithValue("@name", "%" + this.textBoxName.Text + "%");
this.oleDBA.SelectCommand.Parameters.AddWithValue("@sex", this.comboxSex.Text);
this.oleDBA.SelectCommand.Parameters.AddWithValue("@", );
this.oleDBA.SelectCommand.ExecuteNonQuery();
DataTable dt = new DataTable();
this.oleDBA.Fill(dt);
this.DGVSelect.DataSource = dt;
}
catch (Exception eMessage)
{
MessageBox.Show(eMessage.ToString());
}
finally
{
this.OLEDBC.Close();
}
}
解决方案 »
- 如何提高传输效率,关于实时传输
- 向数据库插入记录的疑问
- Windows Service的问题
- 如何动态显示图片而网页面不进行刷新操作?
- 数据绑定到自写类的问题,触发属性变更的事件可否重定义?
- 在winform的一个按钮下如何实习点击进入站点解决送全分
- 学海无涯苦作舟,又一个小问题
- 100分求解!WinCE 5.0下使用timer计时器组件,想要实现pictureBox组件的动画效果,内存竟然不被释放掉,大家有没有碰到过这种情况?
- 请问:用C#能不能实现超载overload的功能啊
- 在DataSet找到满足条件的记录进行更新。或删除。
- treeview服务器段如何获得checkbox内容。
- 求一条sql语句
首先定义DataReader:OleDbDataReader oleDbReader;然后用this.oleDbReader = this.oleDBA.SelectCommand.ExecuteReader()
用完以后,记得this.oleDbReader.Close();
然后this.OLEDBC.Close();这样下一次就可以用了。
做一个函数来转化public DataSet ConvertDataReaderToDataSet(IDataReader reader)
{ DataSet ds = new DataSet();
DataTable dt = new DataTable(); // 定义Meta Table
DataTable SchemaTable = dr.GetSchemaTable();
DataColumn dc = new DataColumn(); foreach (DataRow dr in SchemaTable.Rows)
{
dc = new DataColumn(dr["ColumnName"].ToString(), (Type)dr["DataType"]);
dt.Columns.Add(dc);
} // 装载数据表
ds.Tables.Add(dt); // 从DataReader读数据
object[] values = new object[dt.Columns.Count];
try
{
dt.BeginLoadData();
while (reader.Read())
{
reader.GetValues(values);
dt.LoadDataRow(values, true);
}
}
finally
{
dt.EndLoadData();
reader.Close();
} return ds;
}