gpt4 book ai didi

c# - 尝试在数据集中的表之间创建关系时出现异常 : System. NullReferenceException

转载 作者:搜寻专家 更新时间:2023-10-30 20:28:13 25 4
gpt4 key购买 nike

使用 C#、.net 框架 4.5、VS 2012

尝试在数据集中的表之间创建简单关系,但出现 System.NullReferenceException,正如我在 MSDN 上看到的,这意味着 当您尝试在代码中引用不存在的对象时发生。但是,认为我创建了所有必需的对象。

我的代码如下:

    //create place for storing all tables from data base
private DataSet myDS = new DataSet("AutoLot");

//command builders for easy way access to tables
private SqlCommandBuilder sqlCInventory;
private SqlCommandBuilder sqlCOrders;
private SqlCommandBuilder sqlCCustomers;

//adapters for each table
private SqlDataAdapter sqlAInventory;
private SqlDataAdapter sqlAOrders;
private SqlDataAdapter sqlACustomers;

//connection string
private string cnStr = string.Empty;

public MainForm()
{
InitializeComponent();
//get connection string from .config file
cnStr =
ConfigurationManager.ConnectionStrings["AutoLotSqlProvider"].ConnectionString;
//create adapters
sqlACustomers = new SqlDataAdapter("Select * From Customers", cnStr);
sqlAInventory = new SqlDataAdapter("Select * From Inventory", cnStr);
sqlAOrders = new SqlDataAdapter("Select * From Orders", cnStr);

//automatic generate commands
sqlCCustomers = new SqlCommandBuilder(sqlACustomers);
sqlCInventory = new SqlCommandBuilder(sqlAInventory);
sqlCOrders = new SqlCommandBuilder(sqlAOrders);

//add table to data Set
sqlAInventory.Fill(myDS);
sqlAOrders.Fill(myDS);
sqlACustomers.Fill(myDS);

//create relationship between tables
BuildTableRelationShip();

//create DataSourse for datGrids on UI
dataGridViewCustomer.DataSource = myDS.Tables["Inventory"];
dataGridViewOrders.DataSource = myDS.Tables["Orders"];
dataGridViewCustomer.DataSource = myDS.Tables["Customers"];
}

这里我遇到了异常

    private void BuildTableRelationShip()
{
//create object of relationShips
DataRelation dr = new DataRelation("CustomersOrders", //name of relation
myDS.Tables["Customers"].Columns["CustID"], //main columns
myDS.Tables["Orders"].Columns["OrderID"]); //related columns
myDS.Relations.Add(dr);

//second relation
dr = new DataRelation("InventoryOrder",
myDS.Tables["Inventory"].Columns["CarID"],
myDS.Tables["Orders"].Columns["OrderID"]);
//add relations to dataset
myDS.Relations.Add(dr);
}

为什么我得到这个空引用异常?我想念什么?

编辑

enter image description here

最佳答案

您应该对单个 DataTable 而不是整个 DataSet 调用 fill

sqlAInventory.Fill(myDS);
sqlAOrders.Fill(myDS);
sqlACustomers.Fill(myDS);

会变成

sqlAInventory.Fill(myDS, "Inventory");
sqlAOrders.Fill(myDS, "Orders");
sqlACustomers.Fill(myDS, "Customers");

此方法将自动向您的 DataSet 添加一个表(如果它不存在),如果存在则用数据填充它。 MSDN有关于这种填充方法的更多信息。

关于c# - 尝试在数据集中的表之间创建关系时出现异常 : System. NullReferenceException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20311066/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com