我正在尝试使用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。
由于
答案 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;
}
}