Code Bye

问一下此问题怎么样解决

foxd 于 2016-05-22 17:46:36 编辑

以下的sql语句是可以正确执行的:
string sql = “Select a.*,b.Name from tb_TreatmentRecord as a Inner Join tb_PersonalInfo as b On a.SerialNo = b.SerialNo where a.id = ” + frmLogin.M_Record + “”;
dt = dbc.getds(sql, “TreatmentRecord_PersonalInfo”).Tables[0];
if (dt.Rows.Count != 0)
{
this.lblpatientName.Text = Convert.ToString(dt.Rows[0][“b.Name”]);       //报错!
this.cbbDiagnosis.Text = Convert.ToString(dt.Rows[0][“[a.Diagnosis]”]);  //报错!
……
}
但是当本人想把查询的结果显示出来,上面两句的写法均会报错,说是:列”b.Name” 不属于表TreatmentRecord_PersonalInfo。
但假如改为:
this.lblpatientName.Text = Convert.ToString(dt.Rows[0][0]);
this.cbbDiagnosis.Text = Convert.ToString(dt.Rows[0][1]);
就不会报错且能正常赋值了。可是这样就得一个一个的数字段太不方便,问一下怎么样可以用字段名的方式来写呢?谢谢!

解决方案

10

假如你的数据库的字段名不重复,可以直接用dt.Rows[0][“Name”]这样取出,假如有重复的,可以给字段加上别名,如
Select a.*,b.Name as bname  from tb_T
取出时用dt.Rows[0][“bname”]即可

10

this.lblpatientName.Text = Convert.ToString(dt.Rows[0][“b.Name”]);       //报错!
this.cbbDiagnosis.Text = Convert.ToString(dt.Rows[0][“[a.Diagnosis]”]);  //报错!
你的SQL查出来的datatable列名分别是Name和Diagnosis,而不是b.Name和a.Diagnosis

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明问一下此问题怎么样解决