C# WPF 使用 Ado.Net 查询多个表
C# WPF Querying multiple tables with Ado.Net
我正在尝试在 C# WPF 中创建一个小项目,但我遇到了以下问题:
我有一个包含多个 table 的数据库,其中一个名为 "Person" 并具有一堆属性(姓名、年龄等),其中一个属性是 "CompanyId"(它代表此人正在工作的公司)并且是 "Company" table 的外键。
"Company" table 有一个 Id 和一个 Name 作为属性。
当我 select 列表框中的人名时,我试图在文本块中显示此人的属性。我面临的问题是当我试图显示一个属性(来自 Person table)时,它是另一个 table(CompanyId->Company)
的外键
这是代码的一部分:
using (SqlConnection conn = new SqlConnection(cs))
{
conn.Open();
SqlCommand scmd = conn.CreateCommand();
scmd.CommandText = "SELECT * FROM dbo.Person WHERE Id=@PId";
scmd.Parameters.AddWithValue("@PId", lstContactList.SelectedIndex + 1);
SqlDataReader dr = scmd.ExecuteReader();
while (dr.Read())
{
txtbFirstName.Text = dr["FirstName"].ToString();
txtbLastName.Text = dr["LAstName"].ToString();
txtbCompany.Text = dr["Company"].ToString();
}
如何显示公司 table 的属性 "Name" 以反映 selected 人员所在的公司?
你的scmd.CommandText应该是:
SELECT * FROM dbo.Person p
join dbo.Company c ON p.CompanyId = c.CompanyId
WHERE Id=@PId
试试这个更新
int companyId=0;
using (SqlConnection conn = new SqlConnection(cs))
{
conn.Open();
SqlCommand scmd = conn.CreateCommand();
scmd.CommandText = "SELECT *,CompanyName FROM dbo.Person p join dbo.Company c ON p.CompanyId = c.CompanyId WHERE Id=@PId";
scmd.Parameters.AddWithValue("@PId", lstContactList.SelectedIndex + 1);
SqlDataReader dr = scmd.ExecuteReader();
if(dr.Read())
{
txtbFirstName.Text = dr["FirstName"].ToString();
txtbLastName.Text = dr["LAstName"].ToString();
txtbCompany.Text=int.Parse(dr["CompanyName "].ToString());
}
conn.Close();
}
希望对你有帮助
我正在尝试在 C# WPF 中创建一个小项目,但我遇到了以下问题:
我有一个包含多个 table 的数据库,其中一个名为 "Person" 并具有一堆属性(姓名、年龄等),其中一个属性是 "CompanyId"(它代表此人正在工作的公司)并且是 "Company" table 的外键。 "Company" table 有一个 Id 和一个 Name 作为属性。
当我 select 列表框中的人名时,我试图在文本块中显示此人的属性。我面临的问题是当我试图显示一个属性(来自 Person table)时,它是另一个 table(CompanyId->Company)
的外键这是代码的一部分:
using (SqlConnection conn = new SqlConnection(cs))
{
conn.Open();
SqlCommand scmd = conn.CreateCommand();
scmd.CommandText = "SELECT * FROM dbo.Person WHERE Id=@PId";
scmd.Parameters.AddWithValue("@PId", lstContactList.SelectedIndex + 1);
SqlDataReader dr = scmd.ExecuteReader();
while (dr.Read())
{
txtbFirstName.Text = dr["FirstName"].ToString();
txtbLastName.Text = dr["LAstName"].ToString();
txtbCompany.Text = dr["Company"].ToString();
}
如何显示公司 table 的属性 "Name" 以反映 selected 人员所在的公司?
你的scmd.CommandText应该是:
SELECT * FROM dbo.Person p
join dbo.Company c ON p.CompanyId = c.CompanyId
WHERE Id=@PId
试试这个更新
int companyId=0;
using (SqlConnection conn = new SqlConnection(cs))
{
conn.Open();
SqlCommand scmd = conn.CreateCommand();
scmd.CommandText = "SELECT *,CompanyName FROM dbo.Person p join dbo.Company c ON p.CompanyId = c.CompanyId WHERE Id=@PId";
scmd.Parameters.AddWithValue("@PId", lstContactList.SelectedIndex + 1);
SqlDataReader dr = scmd.ExecuteReader();
if(dr.Read())
{
txtbFirstName.Text = dr["FirstName"].ToString();
txtbLastName.Text = dr["LAstName"].ToString();
txtbCompany.Text=int.Parse(dr["CompanyName "].ToString());
}
conn.Close();
}
希望对你有帮助