我正在尝试使用C#在visual Studio上制作一个简单的记忆游戏。此游戏必须在数据库中保留一些用户记录。我的数据库不是空的。这是我的代码的一部分:
string ConnectionString = @"Data Source =" + Application.StartupPath + @"\mydb.sdf";
SqlCeConnection sqlConnection1 = new SqlCeConnection(@"Data Source=" +Application.StartupPath + @"\mydb.sdf");
System.Data.SqlServerCe.SqlCeCommand cmdt = new System.Data.SqlServerCe.SqlCeCommand(ConnectionString);
cmdt.CommandText = "insert into logs (Sessionid, score, Minutes, Hintcount, Errorcount, Level, Picname) values(@ID, @Score, @Minutes, @Hintcount, @Errorcount, 'Level 1', @Picname)";
cmdt.Connection = sqlConnection1;
sqlConnection1.Open();
{
SqlCeCommand cmd = new SqlCeCommand("select ID from Userrecords where ID=(select MAX(ID) from Userrecords) and Username='" + LoginInfo.UserID + "'", sqlConnection1);
cmd.UpdatedRowSource = UpdateRowSource.OutputParameters;
int id = (int)cmd.ExecuteScalar();
cmdt.Parameters.AddWithValue("@Score", point);
cmdt.Parameters.AddWithValue("@Minutes", time);
cmdt.Parameters.AddWithValue("@Hintcount", hbuttoncount);
cmdt.Parameters.AddWithValue("@Errorcount", errorcount);
cmdt.Parameters.AddWithValue("@Picname", nameused2);
cmdt.Parameters.AddWithValue("@ID", id);
cmdt.UpdatedRowSource = UpdateRowSource.OutputParameters;
cmdt.ExecuteNonQuery();
sqlConnection1.Close();
}
我正在尝试使用executeScalar方法,以便从另一个表中检索会话ID。但它总是返回NULL,因此抛出异常。有什么选择我可以使用吗?
答案 0 :(得分:0)
我认为你想要ID
的最新Username
,那么你的查询是错误的。使用:
var sql = @"SELECT MAX(ID) As Id
FROM Userrecords
WHERE Username = @UserName";
SqlCeCommand cmd = new SqlCeCommand(sql, sqlConnection1);
cmd.Parameters.Add("@UserName", SqlDbType.VarChar).Value = LoginInfo.UserID;
如果此记录意外地具有搜索的Username
。