C# SQL适配器似乎未填充数据集
我目前正在尝试使用我拥有的数据库填充数据集。以下代码似乎根本没有填充数据集:C# SQL适配器似乎未填充数据集,c#,sql,sql-server,sql-server-2005,C#,Sql,Sql Server,Sql Server 2005,我目前正在尝试使用我拥有的数据库填充数据集。以下代码似乎根本没有填充数据集: private static DataSet records = new DataSet(); public static DataSet LoanersData() { //query string **add more tables as needed** string querystring = "SELECT * FROM LoanerItems; SEL
private static DataSet records = new DataSet();
public static DataSet LoanersData()
{
//query string **add more tables as needed**
string querystring = "SELECT * FROM LoanerItems; SELECT * FROM Customers; SELECT * FROM Jobs";
//sql connection
SqlConnectionStringBuilder scsb = new SqlConnectionStringBuilder();
scsb.DataSource = "LLOYD2\\";
scsb.InitialCatalog = "LoanersTest";
scsb.IntegratedSecurity = true;
scsb.ConnectTimeout = 30;
SqlConnection loanersConnection = new SqlConnection(scsb.ConnectionString);
SqlDataAdapter adapter = new SqlDataAdapter(querystring, loanersConnection);
adapter.TableMappings.Add("Table", "LoanerItems");
adapter.TableMappings.Add("Table1", "Customers");
adapter.TableMappings.Add("Table2", "Jobs");
adapter.Fill(records);
return records;
}
这是:
{
InitializeComponent();
records = DataRetreive.LoanersDataSet.LoanersData();
LoanerItemsTable = records.Tables["LoanerItems"];
CustomersTable = records.Tables["Customers"];
LoanerItemsTable = records.Tables["Jobs"];
}
我无法确定数据集是否已填充,但在尝试按如下方式查询其中一个数据表时:
IEnumerable<DataRow> query = from LoanerItems in LoanerItemsTable.AsEnumerable() select LoanerItems;
foreach (DataRow p in query)
{
loanerComboBox1.Items.Add(p.Field<string>("BCPartnNumber"));
}
IEnumerable query=来自LoanerItemsTable中的LoanerItems.AsEnumerable()选择LoanerItems;
foreach(查询中的数据行p)
{
loanerCombox1.Items.Add(p.Field(“BCPartnNumber”));
}
我没有收到任何错误,但组合框中没有添加任何内容。在调试期间,我注意到它无法在数据行中循环,因为数据表中没有任何内容
我想做的和我正在做的可能是两件不同的事情。我想至少在桌子上澄清一下“BCPartnumber是列的名称。如果需要的话,我可以提供更多的代码,但目前还没有太多其他的代码可供提供。最好的方法是使用查询分析器或SQL Server Management Studio查看LoanerItems表的结构,以验证它是否具有BCPartnNumber字段
如果数据库中有记录,那么如果LoanerItems表中没有BCPartnNumber字段,代码将引发异常 如果要从3个表中填充数据集,请分别尝试这三个select语句,并更改代码,如图所示 如果您对此有任何疑问,请告诉我。我将其称为“5磅袋子中的10磅肉”。您的目标是用零件填充组合框,但您的函数将从三个查询中返回三个表的数据集。将LoanersData()函数重构为三个不同的函数,这些函数为三组数据返回一个DataTable(而不是DataSet)。例如,用于组合框中所需零件数据的PartsData()。然后将组合框绑定到PartsData()的结果:
您还必须设置组合框的DisplayMember和ValueMember属性。它在数据库中。只要在VisualStudio中使用Transact-SQL编辑器,就可以看到它的存在。我在数据库中有大约100条记录,该列不包含空记录。将其更改为数据库中不存在的列将无法引发异常。我假设这意味着datatable中没有记录?在records中更改表的名称。Tables无法向抛出异常。例如
LoanerItemsTable=records.Tables[“SomeRandomTable”]代码>仍然无法引发异常。我很确定错误存在于试图填充数据集本身的某个地方。我只是不确定错误是什么。你收到的是什么错误?你原来的帖子说你没有收到任何错误。records.Tables[“SomeRandomTable”]应返回null,这可能会导致LoanerItemsTable.AsEnumerable()引发ArgumentException。这是怎么回事?
loanerComboBox1.DataSource = PartsData();