在数据库中存储计时器数值?C#

3

我有一个全局变量“ I”,用于计时器。我正在创建的程序让用户玩游戏并将其级别时间与其他用户一起存储在数据库中。这是我已经拥有的。

public static class Global
{
    public static int I = 0; 
}

^ 这是计时器的全局变量。

        SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\Adam\Documents\Data2.mdf;Integrated Security=True;Connect Timeout=30"); 
        SqlDataAdapter sad = new SqlDataAdapter("Select Count(*) From Login where Username= '" + txtUsername.Text + "' and Password='" + txtPassword.Text + "'", con); 
        SqlCommand cmd = new SqlCommand("INSERT INTO HighScore (Username, Score) VALUES(@Username,@Score)", con);
        DataTable dt = new DataTable(); //empty table
        sad.Fill(dt); 
        if (dt.Rows[0][0].ToString() == "1")   
        {
            con.Open();
            cmd.Parameters.AddWithValue("@USERNAME", txtUsername.Text);
            cmd.Parameters.AddWithValue("@Score", Global.I);
        }
        else // else it will display this error
        {
            MessageBox.Show("Please enter the correct login details");
        }

^^ 这是游戏结束画面的代码,你可以看到我尝试使用 Global.I 并加上 HighScore 表中的 @Score 值,该表位于我的数据库中。 现在当我点击按钮时,它不会将任何内容写入数据库,但当我尝试保存时也没有出现任何错误,这就是我感到困惑的原因。 任何帮助都将不胜感激,谢谢。


关于实际问题:您是否真正执行了该命令?发布该代码,将断点放在该行上,并确保该行被执行。 - usr
1
没关系,但你真的应该执行你写的查询。这总是有帮助的。 - user1228
@Will 我尝试了,但它仍然无法写入数据库:/ - Adam Hardie
@AdamHardie 这就是我之前给你的建议。 ;) 很高兴你的问题已经解决了。祝你编程愉快! - Lews Therin
1
@Sylverac 是的,我知道 :) 我只是在学习,所以不确定你的意思,祝你有美好的一天 :) - Adam Hardie
显示剩余5条评论
1个回答

1

在执行任何命令之前,您必须先打开连接。您在调用 Fill() 之后才打开连接!!您还需要执行 cmd。请尝试以下操作:

SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\Adam\Documents\Data2.mdf;Integrated Security=True;Connect Timeout=30"); 
SqlDataAdapter sad = new SqlDataAdapter("Select Count(*) From Login where Username= '" + txtUsername.Text + "' and Password='" + txtPassword.Text + "'", con); 

SqlCommand cmd = new SqlCommand("INSERT INTO HighScore (Username, Score) VALUES(@Username,@Score)", con);
con.Open();
cmd.Parameters.AddWithValue("@USERNAME", txtUsername.Text);
cmd.Parameters.AddWithValue("@Score", Global.I);
DataTable dt = new DataTable(); //empty table
sad.Fill(dt);
cmd.ExecuteNonQuery(); 

您知道如何正确使用参数,这也是令人钦佩的,但是您只在一个查询中使用了它们,而不是两个查询。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接