如何将参数传递给LIMIT?我能将所有查询输出保存在一个字符串中吗?

时间:2012-07-04 17:06:38

标签: c# mysql sql serial-port

我有2个问题,有点相关:

1)。如何将参数值传递给限制?可能吗 ?

我试过这个:

log.CommandText = "SELECT * from log order by date desc limit ?param1";  

但它不起作用,因为参数传递如下:“2”。

解决:

log.CommandText = String.Format("SELECT * from log order by date desc limit {0}, yourIntNumber) 

2)。我可以将上面查询的输出保存在C#中的一个变量中吗? 我尝试过类似的东西..但是日志不包含所有内容..

                while (Reader.Read())
                {
                    for (int i = 0; i < Convert.ToInt16(lognr); i++)
                    {

                        logs = logs + (Reader.GetValue(i).ToString());  
                    }

                }

2 个答案:

答案 0 :(得分:0)

第一次补习: -

您可以使用Top关键字,例如: - 对于MSSQL(Microsoft SQL)

Select TOP 3 * From Table_name

对于MYSQL

Select * From Table_name LIMIT 3

以上将返回前3行。

关于第二个问题,

while (Reader.Read())
 {
      for (int i = 0; i < Convert.ToInt16(lognr); i++)
       {

        logs = logs + (Reader.GetValue(i).ToString());  
        }

   }
}

此代码正在检查条件Convert.ToInt16(lognr),这就是它没有返回所有内容的原因。

希望以上信息可以帮助您:)

答案 1 :(得分:0)

1)。如何将参数值传递给限制?有可能吗?

我试过这个:

log.CommandText = "SELECT * from log order by date desc limit ?param1";  

但它不起作用,因为参数传递如下:“2”。

解决:

log.CommandText = String.Format("SELECT * from log order by date desc limit {0}, yourIntNumber)

2)。我可以将上面查询的输出保存在C#中的一个变量中吗?我尝试过类似的东西..但是日志不包含所有内容..

        while (Reader.Read())
        {
            for (int i = 0; i < Convert.ToInt16(lognr); i++)
            {

                logs = logs + (Reader.GetValue(i).ToString());  
            }

        }

解决:

log.CommandText = String.Format("SELECT * from log order by date desc limit {0}", lognr);  //the output has 3 columns and several rows.
Reader = log.ExecuteReader();
int i = 0;
while (Reader.Read())
{
logs = logs + "\r\n" + Reader.GetValue(0).ToString() + " " + Reader.GetValue(1).ToString() + " "+ " " + Reader.GetValue(2).ToString();
i++;
}