select语句如何从“*”读取所有内容

时间:2010-09-10 09:16:44

标签: c# sql asp.net-mvc

我的陈述:

string sqlCommandText = "SELECT * FROM ForumThread WHERE";

如何从中阅读*

我正在尝试这样但它不起作用:

if (reader["*"] != DBNull.Value)
{
    result.TextContent = Convert.ToString(reader["*"]);
}

3 个答案:

答案 0 :(得分:4)

*不是一个列,它是SELECT只需抓取它可以找到的每一列的指令。

列将单独显示,因此您需要逐个遍历列并抓取其内容。

要获取列内容,您可以执行以下操作:

StringBuilder sb = new StringBuilder();
for (int index = 0; index < reader.FieldCount; index++)
{
    object value = reader[index];
    if (value != DBNull.Value)
        sb.Append(value.ToString());
}
result.TextContent = sb.ToString();

然而,这将导致所有东西被混合在一起。

例如,如果您的结果集如下所示:

A    B    C    D
10   20   30   Some name here

然后您的结果字符串将如下所示:

102030这里的名字

这是你想要的吗?

也许你告诉我们你想要完成什么,我们能想出更好的答案吗?

答案 1 :(得分:1)

此外,您可以使用此方法检索关联的字段名称:

reader.GetName( /* index of the column */);

答案 2 :(得分:0)

假设您的 ForumThread 表包含 ThreadResponse 列,并且您实际上想要阅读 ThreadResponse 列,则可以使用下一个代码:

//calculates the column ordinal based on column name
int ThreadResponseColumnIdx = reader.GetOrdinal("ThreadResponse");

//If there is a line in the result
if (reader.Read())
{
  //read from the current line the ThreadResponse column
  result.TextContent = reader.GetString(ThreadResponseColumnIdx);
}