如何在c#/ sqlite中解析并获取关联列值

时间:2013-11-15 17:40:03

标签: c# sqlite

在下面的代码中,我查询我的SQlite数据库并解析它以查看maxlen列中是否有任何值> 30.然后我将这些值添加到一个列表中,我稍后会用它来向用户显示。

我想要的是什么:

现在,如果maxLen> 30中有值,我希望能够知道Seq(列)值与之相关的是什么。

示例:(我知道这些不是> 30但是)说我想要MaxLen列中的值3,4和10。但是有了这些,我还想要相关的Seq值为1,2,3。怎么做?

enter image description here

string sql4 = "select * from abc";
SQLiteCommand command = new SQLiteCommand(sql4, sqlite_conn);

SQLiteDataReader reader = command.ExecuteReader();

while (reader.Read())
{
    // Parse Max Length Column
    int maxlen;
    if (int.TryParse(reader["MaxLen"].ToString(), out maxlen))
        if (maxlen> 30.00)
        {
            MaxLen.Add(maxlen);
            maxlen1 = true;
        }
}

编辑:我会这样做吗?

string sql4 = "select seq, maxLen from abc where maxLen > 30";
SQLiteCommand command = new SQLiteCommand(sql4, sqlite_conn);

// The datareader allows us to read the table abc row by row
SQLiteDataReader reader = command.ExecuteReader();


while (reader.Read())
{
    // Parse Seq column
    int seq;
int maxLen1;
    if (int.TryParse(reader["Seq"].ToString(), out seq) && int.TryParse(reader["maxLen"].ToString(), out maxLen1))
{
    SeqIrregularities.Add(seq);
    NewList.Add(maxLen1); 
}

1 个答案:

答案 0 :(得分:2)

如果要检索Seq值和大于30的MaxLen值,则使用select * from abc可能不合适。如果您这样做,则必须在C#代码中处理/过滤它们。

为什么不在查询中过滤它们并简化C#中的所有计算?

您可以使用:

select seq, maxLen from abc where maxLen > 30

然后迭代这个(已经过滤的)结果。

请注意,您应该将所需的任何其他字段添加到select子句中。