区分C#SqlConnection中具有相同名称的2个SQL列名

Dan*_*olo 14 c# sql-server asp.net

我在SQL查询中使用不同的别名两次加入相同的2个表,使我能够选择2个(可能但不总是)不同的地址ID,然后链接到地址表.

SELECT C.court_id, C.court_name, CA.court_address, CA2.court_address...
FROM court C " +
JOIN court_addr CA ON C.court_addr_id = CA.court_addr_id " +
JOIN court_addr CA2 ON C.court_postal_addr_id = CA2.court_addr_id " + ...
Run Code Online (Sandbox Code Playgroud)

现在,当尝试使用ASP.NET C#输出此查询的结果时,我不确定如何指定Response.Write中的两个地址中的哪一个.将别名放在列名称前面(如下面的第4个字符串值)不起作用并引发错误.有没有办法区分C#中的两个地址,尽管它们在数据库中都有相同的列名?

while (myDataReader.Read())
{
    string court_id = myDataReader["court_id"].ToString();
    string court_name = myDataReader["court_name"].ToString();
    string court_address = myDataReader["court_address"].ToString();
    string court_postal_address = myDataReader["CA2.court_address"].ToString(); 
    etc.....
Run Code Online (Sandbox Code Playgroud)

提前感谢你

Tar*_*ryn 32

您应该在sql中使用别名来区分它们,然后您将能够返回正确的值:

SELECT C.court_id, 
  C.court_name, 
  CA.court_address as CACourtAddress, 
  CA2.court_address as CA2CourtAddress
FROM court C " +
JOIN court_addr CA ON C.court_addr_id = CA.court_addr_id " +
JOIN court_addr CA2 ON C.court_postal_addr_id = CA2.court_addr_id " + ...
Run Code Online (Sandbox Code Playgroud)