如何使用sqllite和c#返回计数值

时间:2017-06-13 01:28:46

标签: c# .net sqlite

我正在尝试使用c#和sqllite来查看记录是否存在..

我的代码如下

  public static bool RecordExists(string fileName)
        {
            SetConnection();
            bool returnValue = false;

            try
            {
                using (SQLiteCommand sqlCommand = new SQLiteCommand("select count(FileName) from downloadedfiles where fileName = '@Filename'", sql_con))
                {
                    sql_con.Open();
                   sqlCommand.Parameters.Add(new SQLiteParameter("@FileName", fileName));
                   long userCount = (long)sqlCommand.ExecuteScalar();
                    if (userCount > 0)
                    {
                        returnValue = true;
                    }

                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }    


            return returnValue;
        }

两件事,

第一点 - 最初我把我的userCount作为int,但它一直在说错误...为什么会这样做?

第二点 - 即使表中存在具有相同fileName的数据,userCount也始终返回0。

由于

2 个答案:

答案 0 :(得分:0)

select count(FileName) 
from downloadedfiles 
where fileName = '@Filename'
'@Filename'=>@Filename

答案 1 :(得分:0)

1,你不应该在参数中使用引号。第二步,在查询中将参数命名为@Filename,在添加时使用@FileName。这些2导致您的查询始终返回null。尝试:

using (SQLiteCommand sqlCommand = new SQLiteCommand("select count(FileName) from downloadedfiles where fileName = @Filename", sql_con))
{
  sql_con.Open();
  sqlCommand.Parameters.Add(new SQLiteParameter("@Filename", fileName));
  int userCount = (int)sqlCommand.ExecuteScalar();
  if (userCount > 0)
  {
     returnValue = true;
  }
}