【问题标题】:my sql returns only single valuemysql 只返回单个值
【发布时间】:2011-10-14 10:36:41
【问题描述】:

我有

staff table
staff_Id
staff_Accesscode values (access123,code123,staff12)....

我这样做是为了获取 staff_accesscode 中的所有值

DataTable dt2 = null;
string sql = @"SELECT staff_AccessCode FROM staff";
dt2 = xxxxxx.GetData(sql, gBaseUrl);
if (dt2 != null && dt2.Rows.Count > 0)
{
   accessname = dt2.Rows[0]["staff_AccessCode"].ToString();
}

但问题是它只返回存储在staff_Accesscode中的最后一个值,我的意思是它只返回这个值(staff12)

现在我想获取存储在 staff_Accesscode 字段中的所有值,并且进一步我想用 txtbox.text 检查这个值

【问题讨论】:

  • 只获取一个值,因为您只访问一行?
  • 您可以控制此数据架构吗?您是否创建了关系和表格?您是否在字段中存储逗号分隔的值?
  • 是的,但我必须获取 staff_Accesscode 中的所有值

标签: c# mysql sql database winforms


【解决方案1】:

您仅访问第一行(索引为 0)。 您可能会遍历完整的结果集:

for ( int i = 0; dt2 != null && i < dt2.Rows.Count; ++i )
{
    String tmp = dt2.Rows[ i ]["staff_AccessCode"].ToString();
    if ( tmp.Equals( what_ever_variable_or_constant /* e.g., txtbox.Text */ ) )
    {
        accessname = tmp;
        //break; ?
    }
}

【讨论】:

  • 这将在每次迭代时覆盖accessname。它只会返回查询的最后一个结果。你应该要么做 accessname += dt2... 要么创建一个 accessname 数组并在每次迭代中添加:acessname[i] = dt2.Rows...
  • 你可以相信,我知道。这里的问题不是accessname,而是缺乏迭代。但是,我编辑了帖子。
【解决方案2】:

您只访问accessname = dt2.Rows[0]... 行中的第一行;您需要遍历集合中所有可用的行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-30
    • 1970-01-01
    • 1970-01-01
    • 2012-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多