我正在尝试制作游戏。该游戏包含一个数据库。这是我的代码的一部分:
string ConnectionString = @"Data Source =" + Application.StartupPath + @"mydb.sdf";
SqlCeConnection con = new SqlCeConnection(@"Data Source="Application.StartupPath + @"mydb.sdf");
var sql= @"SELECT Points FROM Userrecords WHERE ID = (SELECT MAX(ID) FROM Userrecords) AND Username = @UserName ";
SqlCeCommand cmd = new SqlCeCommand(sql, con);
cmd.Parameters.Add("@UserName", LoginInfo.UserID);
con.Open();
var ob = cmd.ExecuteScalar();
// Pointlbl.Text = (string)cmd.ExecuteScalar();
//cmd.ExecuteNonQuery();
con.Close();
问题是我不知道如何正确选择查询,因此代码始终在此行上抛出null例外: var ob = cmd.ExecuteScalar();
type'system.data.sqlserverce.sqlceexception'的一个未经处理的例外发生在system.data.data.sqlserverce.dll
中
形成选择查询的最正确方法是什么?
如果Scaisedge的查询不起作用,也许尝试以下内容:
SELECT TOP 1 Points
FROM Userrecords
WHERE Username = @UserName
ORDER BY ID DESC
可能是您的子句必须放置在子选择中
SELECT Points
FROM Userrecords
WHERE ID = (SELECT MAX(ID) FROM Userrecords
AND Username = @UserName )
否则可能不匹配并且不返回正确的值