盾怪网教程:是一个免费提供流行杀毒软件教程、在线学习分享的学习平台!

ADO.NET中的多数据表设置浅析之读取

时间:2024/11/8作者:未知来源:盾怪网教程人气:

[摘要]tableNames[index].Length == 0 )      throw new ArgumentException( "The tableNames parameter mu...
tableNames[index].Length == 0 )
     throw new ArgumentException( "The tableNames parameter must contain a list of tables, a value was  provided as null or empty string.", "tableNames" );

     tableName += (index + 1).ToString();//这里出现错误

   }
  }
  dataAdapter.Fill(dataSet);
  command.Parameters.Clear();
 }
 if( mustCloseConnection )
  connection.Close();
}
  这里把tableName += (index + 1).ToString();修改成

dataAdapter.TableMappings.Add((index>0) (tableName+index.ToString()):tableName, tableNames[index]);就能解决问题。

  接下来看看窗体程序的代码:

public class Form1 : System.Windows.Forms.Form
{
 private DataAccess _dataAccess;
 private DatasetOrders _ds;
 //……
 //构造函数
 public Form1()
 {
  InitializeComponent();
  _dataAccess = new DataAccess();
  _ds = new DatasetOrders();
  _ds.EnforceConstraints = false; //关闭约束检查,提高数据填充效率
  this.dataGridCustomers.DataSource = _ds;
  this.dataGridCustomers.DataMember = _ds.Customers.TableName;
  this.dataGridOrders.DataSource = _ds;
  this.dataGridOrders.DataMember = _ds.Customers.TableName+"."+_ds.Customers.ChildRelations[0].RelationName;
  this.dataGridOrderDetails.DataSource = _ds;
  this.dataGridOrderDetails.DataMember =_ds.Customers.TableName+"."+
    _ds.Customers.ChildRelations[0].RelationName+"."+
    _ds.Orders.ChildRelations[0].RelationName;
 }

  对于上面的三个表的动态关联,你也可以使用SetDataBinding方法来完成数据的动态绑定,而不是分别指定DataGride的DataSource和DataMemger属性。

this.dataGridCustomers.SetDataBinding(_ds,_ds.Customers.TableName);

this.dataGridOrders.SetDataBinding(_ds,_ds.Customers.TableName+"."+_ds.Customers.ChildRelations[0].RelationName);

this.dataGridOrderDetails.SetDataBinding(_ds,_ds.Customers.TableName+"."+
  _ds.Customers.ChildRelations[0].RelationName+"."+_ds.Orders.ChildRelations[0].RelationName);
}

  数据填充事件处理如下:

private void buttonFillData_Click(object sender, System.EventArgs e)
{
 _ds.Clear();//重新填充数据集
 _dataAccess.FillCustomerOrdersInfo(_ds);
 //_dataAccess.FillCustomerOrdersInfoWithSqlHelper(_ds);
}

  执行上面的事件处理函数我们会看到数据显示到对应的DataGrid上,如(图2-1)所示。

  如果使用数据读取器获取多表纪录下面是实现的一种方式(参考):

SqlCommand comm = new SqlCommand("GetCustomerOrdersInfo",_conn);
comm.CommandType = CommandType.StoredProcedure;
_conn.Open();
SqlDataReader reader = comm.ExecuteReader();
do
{
 while(reader.Read())
 {
  Console.WriteLine(reader[0].ToString());//获取数据代码
 }
}while(reader.NextResult());
Console.ReadLine();
_conn.Close();



关键词:ADO.NET中的多数据表设置浅析之读取




Copyright © 2012-2018 盾怪网教程(http://www.dunguai.com) .All Rights Reserved 网站地图 友情链接

免责声明:本站资源均来自互联网收集 如有侵犯到您利益的地方请及时联系管理删除,敬请见谅!

QQ:1006262270   邮箱:kfyvi376850063@126.com   手机版