C# 带有字符串参数的SQLite查询总是失败

C# 带有字符串参数的SQLite查询总是失败,c#,asp.net,visual-studio,sqlite,C#,Asp.net,Visual Studio,Sqlite,我只想通过按用户名搜索来获取DB条目的ID protected void cmdSearch_Click(object sender, EventArgs e) { string connStr = @"Data Source=D:\DB-Files\sqlite.db; Version=3;"; SQLiteConnection sqlCon = new SQLiteConnection(connStr); SQLiteCommand sqlCom = new SQLi

我只想通过按用户名搜索来获取DB条目的ID

protected void cmdSearch_Click(object sender, EventArgs e)
{
    string connStr = @"Data Source=D:\DB-Files\sqlite.db; Version=3;";
    SQLiteConnection sqlCon = new SQLiteConnection(connStr);
    SQLiteCommand sqlCom = new SQLiteCommand("SELECT ID FROM TableTest WHERE UserName = @UserName", sqlCon);
    sqlCom.Parameters.AddWithValue("@Username", txtUsername.Text);

    sqlCon.Open();
    int rows = sqlCom.ExecuteNonQuery();
    sqlCon.Close();

    lblUserFound.Text = rows.ToString();
}

无论我尝试什么,总是失败;使用Visual Studio C#和SQLite版本3;对SQLite数据库管理器的查询抛出了一个肯定的结果

您使用了错误的方法检索数据。这一行是错误的:

int rows = sqlCom.ExecuteNonQuery();
ExecuteNonQuery
仅返回一个值,该值指示查询是否正常运行。由于您只需要一个结果,因此可以使用
ExecuteScalar
。试试这个:

int rows = Convert.ToInt32(sqlCom.ExecuteScalar());

没有例外,结果总是-1(对于受影响的行)-->我的意思是,不返回任何行(编辑)
ExecuteNonQuery
是错误的方法,因为SELECT是一个查询。。您需要填写数据表或使用数据读取器。您不应该在SQLIte中使用AddWithValue。另外,
@UserName
@UserName
之间可能存在问题。非常确定命名参数区分大小写。