Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用asp.net通过eval读取外键数据?_C#_Asp.net_Sql Server_Database - Fatal编程技术网

C# 如何使用asp.net通过eval读取外键数据?

C# 如何使用asp.net通过eval读取外键数据?,c#,asp.net,sql-server,database,C#,Asp.net,Sql Server,Database,只是想了解一下我的数据库。我有两张桌子叫brand和StringItem。表brand包含名为brandId、name和image的列。而stringInstrumentItem有一列itemId、brand、model和price。通常我可以通过以下代码显示stringInstrumentItem表的列brand和model的数据: <div id="label"><%# Eval("brand") %> <%# Eval("model") %></d

只是想了解一下我的数据库。我有两张桌子叫brand和StringItem。表brand包含名为brandId、name和image的列。而stringInstrumentItem有一列itemId、brand、model和price。通常我可以通过以下代码显示stringInstrumentItem表的列brand和model的数据:

<div id="label"><%# Eval("brand") %> <%# Eval("model") %></div>
我的网页中的输出是:Ibanez AB30

但现在我正试图学习关系数据库和外键。我将名为brand of stringInstrumentItem的列更改为brandId。现在,brandId列(表stringInstrumentItem的外键)也引用了表brand的主键brandId

问题是,我不能再做同样的事情了。如果我尝试执行这行代码:

<div id="label"><%# Eval("brandId") %> <%# Eval("model") %></div>
它将给我这个输出:1ab30

它不是实际的字符串,而是给我id。我的问题是,如何通过table stringInstrumentItem的brandIdforeign键与table brand的brandIdprimary键之间的关系访问名为name of table brand的列


请注意,我没有在我的代码中编写任何代码来实现这一点。所有代码都是内联的。请给出建议和解决方案

您的select语句现在需要将两个表按如下方式连接起来:

SELECT  brandid ,
    brand ,
    model
FROM    brand
    JOIN stringInstrumentItem ON stringInstrumentItem.brandid = brand.brandid;
现在,您将在输出中同时获得brandid和brand,您可以根据需要进行评估;在这种情况下,您需要再次访问,但如果您需要根据品牌的唯一id执行某些操作,您也将获得brandid

更新

将SELECT语句更改为:

SELECT  *
FROM    stringInstrumentItem
        JOIN brand ON stringInstrumentItem.brandid = brand.brandid
WHERE   brandId IN ( SELECT brandId
                     FROM   brand
                     WHERE  name = @brand );

您的代码运行良好,但我只想问,如果当前我的代码中有这样一条语句,如何实现此解决方案:string query=SELECT*FROM stringInstrumentItem其中brandId INSELECT brandId FROM brand WHERE name=@brand@RockStar查看我的更新,但避免执行SELECT*FROM。。。始终指定要使用的列。它给了我一个例外:模棱两可的列名“brandId”……这意味着什么?第一个解决方案正在工作,但它的更新版本给了我一个例外error@rockstar这意味着表brand和stringInstrumentItem都有一个同名的列。您需要使用table.column表单指定列名,例如选择stringInstrumentItem.brandid、brand.brand等等