2

我创建了一个数据表,我使用其中包含“AS”的 SQL 查询来填充它。

例子:

SELECT (tblUser.FirstName + ' ' + tblUser.LastName) AS 'UserFullName' 
FROM tblUser

我用

SqlDataAdapter.Fill(dtblUserInfo) 

填充表并验证列 UserFullName 存在,其中包含一串数据。

我尝试引用这个单元格

string strUserFullName = dtblUserInfo.Rows[0]["UserFullName"].ToString(); 

即使我可以通过添加手表看到该单元格中有数据,它也会返回一个空字符串。

我确信 Row[0] 是包含包含数据的单元格的行,通常不会硬编码该值,但仅用于解释和调试目的。

对此有什么想法吗?

谢谢,史蒂夫。

4

4 回答 4

2

换这个就行了

SELECT (tblUser.FirstName + ' ' + tblUser.LastName) AS 'UserFullName' 
FROM tblUser

这样

SELECT (tblUser.FirstName + ' ' + tblUser.LastName) AS UserFullName 
FROM tblUser

当您使用时,AS您不需要单引号,它需要一个新的列名。列名从不在引号内。

如果想用用户全名等2个字替换名称,则需要使用[],例如[UserFullName]。

于 2012-08-01T15:38:35.707 回答
0

PhaDaPhunk 说:

换这个就行了

SELECT (tblUser.FirstName + ' ' + tblUser.LastName) AS 'UserFullName' FROM tblUser

这样

SELECT (tblUser.FirstName + ' ' + tblUser.LastName) AS UserFullName FROM tblUser

当您使用 AS 时,您不需要单引号,它需要一个新的列名。列名从不在引号内。

这是一个很好的答案,我还有一点额外的小费。如果要将名称替换为“用户全名”等2个单词,则需要使用[],例如[用户全名]。

于 2012-08-01T16:12:44.143 回答
0

您可以使用此代码查看 DataTable 的内容:它将帮助您找到错误。

foreach(DataRow dr in dtblUserInfo.Rows)
{
    foreach (var item in dr.ItemArray)
    {
        r += item.ToString();
    }
    r += "\r\n";
}
MessageBox.Show(r);

然后验证您的查询...

于 2012-08-01T16:02:29.297 回答
0

由于您在访问单元格时没有收到异常,这告诉您 AS 列描述不是问题。

此外,因为当您访问第 0 行时代码没有抛出异常,这告诉您您的数据检索工作正常。

这意味着问题实际上出在您的数据中。

要验证这一点,只需直接对数据库执行 SQL 脚本。如果您的结果中有 NULL,这可能是问题的一部分(尽管在 SQL Server 中,这应该会导致一个空列值)。

于 2012-08-01T15:43:00.517 回答