C# 由带有“AS”的查询创建的DataTable列无法引用
我已经创建了一个数据表,我使用一个包含“AS”的SQL查询来填充它 例如:C# 由带有“AS”的查询创建的DataTable列无法引用,c#,sql,datatable,C#,Sql,Datatable,我已经创建了一个数据表,我使用一个包含“AS”的SQL查询来填充它 例如: SELECT (tblUser.FirstName + ' ' + tblUser.LastName) AS 'UserFullName' FROM tblUser 我用 SqlDataAdapter.Fill(dtblUserInfo) 以填充表并验证列UserFullName是否存在,其中是否包含一个数据字符串 我试着引用这个单元格 string strUserFullName = dtblUserInfo.
SELECT (tblUser.FirstName + ' ' + tblUser.LastName) AS 'UserFullName'
FROM tblUser
我用
SqlDataAdapter.Fill(dtblUserInfo)
以填充表并验证列UserFullName是否存在,其中是否包含一个数据字符串
我试着引用这个单元格
string strUserFullName = dtblUserInfo.Rows[0]["UserFullName"].ToString();
即使通过添加一个watch,我可以看到该单元格中有数据,但它返回一个空字符串
我确信第[0]行是包含包含数据的单元格的行,通常不会硬编码此值,但仅用于解释和调试目的
有什么想法吗
谢谢,
史蒂夫。把这个换掉就行了
SELECT (tblUser.FirstName + ' ' + tblUser.LastName) AS 'UserFullName'
FROM tblUser
SELECT (tblUser.FirstName + ' ' + tblUser.LastName) AS 'UserFullName' FROM tblUser
由此
SELECT (tblUser.FirstName + ' ' + tblUser.LastName) AS UserFullName
FROM tblUser
SELECT (tblUser.FirstName + ' ' + tblUser.LastName) AS UserFullName FROM tblUser
当您使用AS时,不需要单引号,它需要一个新的列名。列名从不在引号内
如果要将名称替换为2个单词,如User Full name,则需要使用[],例如[UserFullName]。因为在访问单元格时没有收到异常,这表明AS列描述不是问题所在 此外,由于在访问第0行时代码没有引发异常,这表明您的数据检索工作正常 这意味着问题实际上存在于您的数据中
要验证这一点,只需直接对数据库执行SQL脚本。如果结果中有空值,这可能是问题的一部分,尽管在SQL Server中,这会导致列值为空。您可以使用这些代码查看数据表的内容: 它将帮助你发现错误
foreach(DataRow dr in dtblUserInfo.Rows)
{
foreach (var item in dr.ItemArray)
{
r += item.ToString();
}
r += "\r\n";
}
MessageBox.Show(r);
然后验证您的查询…Phadapunk说:
把这个换掉
SELECT (tblUser.FirstName + ' ' + tblUser.LastName) AS 'UserFullName'
FROM tblUser
SELECT (tblUser.FirstName + ' ' + tblUser.LastName) AS 'UserFullName' FROM tblUser
由此
SELECT (tblUser.FirstName + ' ' + tblUser.LastName) AS UserFullName
FROM tblUser
SELECT (tblUser.FirstName + ' ' + tblUser.LastName) AS UserFullName FROM tblUser
当您使用AS时,您不需要它所期望的单引号
新列名。列名从不在引号内
这是一个很好的答案,我还有一点额外的建议。
如果您想用两个单词(如User Full name)替换名称,则需要使用[],例如[User Full name]。如果您查看数据表,是否看到“UserFullName”列?是否尝试删除UserFullName周围的单引号?仔细检查列名后,我发现SELECT tblName.*的结果集中包含另一个名为UserFullName的列。因此,该表在我创建的列UserFullName1中添加了一个1以进行补偿。基本上,我是弱智,感谢所有试图帮助我的人。我很确定,当新的列名作为空格出现时,你必须使用引号。并不是说任何人都应该这样做,但我认为我只是不必要地采用了这种做法。尽管问题是我的愚蠢,我还是将此标记为答案,因为我觉得如果这种情况发生在其他人身上,这可能是一个很好的解决方案。这也是一个很好的答案。或多或少,这是因为它有一套很好的步骤来找出此类问题的根本原因。